IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

se connecter sur un site distant.


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 21
    Points
    21
    Par défaut se connecter sur un site distant.
    Bonjour,

    je souhaite faire un portail avec l'url suivante: portail.test.fr ou mes utilisateurs s'identifieraient.

    j'aimerai que pour l'utilisateur connecté au portail, php s'identifie sur les différents sites auquel l'utilisateur a accès.

    site 1: site1.test.fr
    site 2: site2.test.fr
    etc.

    et quand l’utilisateur clique sur le lien du site 1 ca lui ouvre un nouvel onglet ou page sur le site en question ou il n'a plus à se connecter.

    comment procéder ?

    j'ai vu qu'il existait une bibliothèque Curl permettant de se connecter à un site distant et de récupérer du contenu, chose qui ne correspond pas à mes attentes.

    Cordialement

    Wind.

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    avec les sessions !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_set_cookie_params(0, '/', '.test.fr'); 
    session_start();
    ici, les sessions sont communes a tous les sous-domaines
    $moi= ( !== ) ? : ;

  3. #3
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Le solution de papajoker est la plus pertinente en effet, si tes sites sont bien des sous domaines. Dans le cas contraire, il te faudra trouver une solution alternative (il en existe ^^).

    Un petit mot sur le curl, il est tout à fait inutile dans ton cas, puisque même si curl créait une session , l'utilisateur n'en bénéficierait pas

    Bon courage !
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 21
    Points
    21
    Par défaut
    merci pour vos réponses, mais ma question était en effet imprécise, les différentes sites ne sont pas forcément sur le même domaine.

    Je pensais plus à un procédé ou l'utilisateur se connecte sur le Portail, puis coté php un script simule des connexions sur les différents sites (simulation de connexion et création de cookies), mais je ne trouve pas en cherchant sur le net un procédé qui puisse faire cela.

  5. #5
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Il va falloir rentrer dans la catégorie des solutions bricolées, car ce sont des opérations qui sont par sécurité assez sensible.

    Emmettre un cookie d'un domaine pour un autre, mmmm pas convaincu que ce soit possible.

    Sinon, tu peux ruser en identifiant la personne via une requête ajax, et la rediriger une fois la connexion réalisée vers la page de l'espace sécurisé de ton choix.
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Pour ce que tu veux faire il faut passer par du Single Sign On (SSO).

    Une solution possible est d'implémenter OpenId
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 21
    Points
    21
    Par défaut
    bonsoir,

    j'avais déjà un peu regardé SSO et j'avoue ne pas encore avoir trouvé d'exemple concret clair, ou alors ca n'est pas de mon niveau.

    OpenId me convient pas parce qu'il faut quand meme rentrer un identifiant pour chaque site à chaque fois.

    j'ai essayé de bricolé un bout de code sur un site A:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    jQuery.support.cors = true;
            $.ajax({
                url: "http://b.local/app_dev.php/login_check",
                data: { "_csrf_token":"4bd502b16232695385cfcb3012fdb3bfb6219dcb", "_username":"test", "_password":"test", "remember_me":"on", "_submit":"submit" },
                type: "POST",
                timeout: 30000,
                dataType: "text",
                success: function(data) {
                    console.log("success");
                },
                error: function(jqXHR, textStatus, ex) {
                    console.log(textStatus + "," + ex + "," + jqXHR.responseText);
                }
            });
    en gros j'essaye sur mon site A de simuler en 'post' une connexion sur mon site B. Pour l'instant mes login et pass sont passés en clair, mais on peut tout à fait imaginer un système de clé asymétrique entre les deux serveurs, la n'est pas le problème.

    j'ai aussi modifié le header de mon site B avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header('Access-Control-Allow-Origin: *');
    en exécutant ma requête Ajax sur mon site A j'ai l'erreur suivante dans mon log du site B. (je suis sous Symfony 2.4.0-DEV)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [2013-10-29 17:38:22] security.INFO: Authentication request failed: Your session has timed out, or you have disabled cookies. [] []
    [2013-10-29 17:38:22] security.DEBUG: Redirecting to fos_user_security_login [] []
    je suis visiblement pas loin, mais ca ne doit pas fonctionner au niveau de la session et en particulier des cookies, je voudrais savoir si je fais fausse route ou pas, si il y a une subtilité au niveau de la création de cookies sur le site B à partir du site A.

    Merci d'avance

    Wind

  8. #8
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Les erreurs de type "cross domain" retournent des en-tete spécifiques. Symfony ne te répondrait même pas si c'était le cas.

    Tu es sûr de ton token ?
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 21
    Points
    21
    Par défaut
    oui, j'ai édité ma page de connexion sur le site B, et j'ai copié collé le token, je vois pas la...

    c'est lui qui est responsable du "Authentication request failed: Your session has timed out, or you have disabled cookies" ?

    faut-il le désactiver de FosUserBundle ?

  10. #10
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    En effet, teste en désactivant cette sécurité.

    Le token sous symfony n'est-il pas lié à un referer ? (c'est une question, je suis plus pro Zend que symfony, que je connais assez mal)
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 21
    Points
    21
    Par défaut
    non ca ne fonctionne pas meme sans le token, j'ai vraiment l'impression que ca ne sois pas possible de créer une nouvelle session sur un site distant (en ajax) à partir d'un site qui a déjà une session en cours.

  12. #12
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Poster sur une page distante (en ajax ou non, peut importe, la requête est la même, seul l'en-tete envoi un code différent) est possible. La seule restriction concerne le "Access-Control-Allow-Origin", et l'éventuel plugin d'authentification que tu utilises, qui peut éventuellement te bloquer. Sur le principe cette démarche est tout à fait viable. Si tu ne t'en sors pas et que tu ne peux pas nous en dire plus sur ton environnement, je t'invite à procéder différemment, comme dit au dessus, en centralisant l'authentification (soit via des sessions en bdd, soit via un "serveur" oAuth).
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


Discussions similaires

  1. SQL serveur 2005 - Synchronisation de base sur 2 sites distant
    Par blueghost dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/05/2007, 18h14
  2. Réponses: 2
    Dernier message: 27/04/2007, 13h24
  3. Connaître l'utilisateur connecté sur un pc distant
    Par nguhv dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/03/2007, 15h17
  4. Connection sur un site
    Par dondano dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/01/2007, 19h16
  5. Envoi d'un formulaire en POST sur un site distant
    Par malag dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 12/09/2006, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo