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

Zend_Acl & Zend_Auth PHP Discussion :

Zend_auth - Avoir deux authentification sur deux appli Zend


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut Zend_auth - Avoir deux authentification sur deux appli Zend
    bonjour à tous,

    J'essaie de mettre en place quelques choses de pas très commun et j'ai besoin de votre aide.

    Je suis en train de développer un ensemble de petites applications sur lesquelles une authentification sera nécessaire. Je voudrais donc centraliser ces authentifications pour les informations communes (nom prénom etc) et avoir une authentification pour le reste des informations particulières à chaque application.

    Pour être plus concret, je vais prendre l'exemple de google.
    On créer s'authentifie d'abord sur notre compte google et ensuite on s'authentifie sur analytics par exemple.

    Je voudrais reproduire ce cheminement avec zend mais je en sais pas trop comment m'y prendre.

    Prenons 2 application => Appli1 et Appli2 et une appli d'authentification AppliCenter.
    Voici les URLs correspondantes:
    http://monsite.com/Appli1 ou http://Appli1.monsite.com/
    http://monsite.com/Appli2 ou http://Appli2.monsite.com/
    http://monsite.com/AppliCenter ou http://AppliCenter.monsite.com/

    J'ai donc déjà la première partie en créant l'authentification sur AppliCenter. Je suis donc bien authentifier mais lorsque je vais sur Appli1, je peux encore récupérer l'instance d'authentification que j'avais créée sur AppliCenter. Zend_Auth::getInstance()->getIdentity(); me donne bien l'identité que j'avais sur AppliCenter.

    Comment cela est possible alors que c'est bien deux applications différentes avec deux bibliothèques distinctes ?

    Avez vous déjà eu ce genre d'archi et dans ce cas, comment faire la suite de mon authentification ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Les applications ont beau être différentes, si tu es sur le même serveur, les identifiants de session sont partagés entre tes différentes applis. D'où la récupération de l'identification d'une appli sur l'autre (en passant par les sessions).

    Quand tu dis que tu veux une authentification commune (déjà ok si j'ai bien compris) et une authentification spécifique, ça signifie que les utilisateurs doivent se logguer deux fois ? Ou juste que tu veux récupèrer des données spécifiques d'une application (sans nouvelle authentification de l'utilisateur) ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    L'utilisateur devra se connecter 2 fois.
    Dans le principe, l'utilisateur s'inscrit sur appliCenter. Pour cette inscription, il doit renseigner des infos générales (prénom nom nationalité etc). Le but est d'avoir l'ensemble des utilisateurs inscrit sur ce site.
    Ensuite, il y a plusieurs application qui tourne autour. Pour que l'utilisateur utilise ces applications, il doit faire une seconde inscription dans laquelle il ne rentre que quelques informations supplémentaire et ne servant que pour cette appli.
    Une fois inscrit, il doit donc s'authentifier sur appliCenter et ensuite sur appli1.

    Le but est d'avoir un ensemble d'application que les utilisateurs peuvent utiliser en aillant toujours la même identité. (ex : compte google qui permet d'avoir accès ensuite à tous les autres services. Analytics, adsense etc)

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Pour l'inscription, ok, mais pour l'authentification, je ne te suis pas...

    Tu veux gérer deux mots de passe ? (un pour appliCenter et l'autre pour appli1)

    Si ce n'est pas le cas, alors l'utilisateur ne s'authentifie qu'une fois (dans appliCenter), et dans appli1, tu te sert de cette authentification pour vérifier s'il a des infos supplémentaires spécifiques de l'appli (mais sans le ré-authentifier).

    Tu peux stocker les infos spécifiques dans des variables elles-mêmes stockées par Zend_Auth, en utilisant l'interface Zend_Auth_Storage_Interface.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Oki. Je ne savais pas que les sessions d'authentification étaient partagée entre différentes applis d'un même serveur et en fait, ça m'arrange beaucoup.
    Je ne connais pas le fonctionnement de Zend_Auth_Storage_Interface. Je lis la doc mais j'avoue que j'ai un peu de mal. Aurais-tu un exemple ou un lien vers un tuto à me conseiller ?

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Pour le partage des sessions, je ne connais pas très bien le paramétrage des serveurs web, mais tu dois avoir la possibilité de les séparer. Mais par défaut, si tes applis ne sont que des répertoires dans ton serveur, les identifiants de session sont bien partagés.

    Pour Zend_Auth_Storage_Interface, c'est simplement une interface (!) qui permet d'interagir avec la classe de stockage utilisé par Zend_Auth. Pour récupérer les données stockées, il faut faire Zend_Auth::getInstance()->getStorage()->read(); et pour écrire des données, il faut faire Zend_Auth::getInstance()->getStorage()->write();
    Tu peux ainsi créer ta propre classe de stockage (utilisant les sessions, une base de données, ce que tu veux) :
    http://framework.zend.com/manual/fr/...istence.custom

    Ce que je te proposais, c'était dans ton appli générale d'identification, faire après authentification de l'utilisateur quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $data = array('AppliCenter' => array('login' => $login, 'nom' => $nom, ...));
    $auth->getStorage()->write($data);
    Puis dans les autres applis, si l'utilisateur est déjà authentifié (sinon le rediriger vers AppliCenter) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $data = $auth->getStorage()->read();
    if (isset($data['Appli1']))
    {
        // l'utilisateur est déjà venu sur appli1 et a déjà récupéré ses infos persos
    }
    else
    {
        // récupération des infos de l'utilisateur grâce aux données de $data['AppliCenter'], par exemple le login
        // si l'utilisateur est inconnu, redirection vers une page d'enregistrement
        // sinon, ajout des infos particulières à Appli1 :
        $data['Appli1'] = array('propriete1' => $prop1, 'propriete2' => $prop2);
        $auth->getStorage()->write($data);
    }
    Je n'ai pas testé ce mode de fonctionnement, mais ça devrait répondre à ton besoin

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2013, 16h49
  2. [ZF 1.11] Authentification sur deux colonnes
    Par Eixurit dans le forum Zend_Acl & Zend_Auth
    Réponses: 3
    Dernier message: 24/03/2011, 17h54
  3. [PHP 5.2] Authentification sur deux sites
    Par deglingo592003 dans le forum Langage
    Réponses: 8
    Dernier message: 08/09/2009, 13h00
  4. Caption sur deux lignes sur un bouton?
    Par Jayceblaster dans le forum Delphi
    Réponses: 4
    Dernier message: 09/06/2006, 13h57
  5. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21

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