2011-11-23 8 views
0

Je travaille sur une solution SSO pour mon application. J'ai un domaine principal accounts.mydomain.com où l'utilisateur se connecte. Après m'être connecté avec succès, j'ai besoin d'authentifier l'utilisateur dans tous mes autres domaines.s'authentifier dans plusieurs domaines en utilisant curl (php/symfony 1.4)

Chaque fois qu'un utilisateur est connecté, je crée un jeton d'authentification puis je fais un appel à une méthode de connexion pour chaque domaine, qui lit le jeton, obtient l'utilisateur de la base de données puis se connecte dans ce domaine .

Tout fonctionne bien, mais l'utilisateur je ne peux pas persister la session de l'utilisateur dans les autres domaines.

Ceci est mon code: (en utilisant symfony 1.4):

My main login action: 
<?php 
    // get a auth token for the user 
     (...) 

     // cycle through all my domains and make a curl request to the connect action of each one 
    // passing the auth token 
     foreach(sfConfig::get('app_connect_urls') as $url){ 
       $url.= '?auth_token='.$authToken; 

       $ch = curl_init(); 
       curl_setopt($ch, CURLOPT_URL, $url); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

       $curlResult = curl_exec($ch); 

       $curl_errno = curl_errno($ch); 
       $curl_error = curl_error($ch); 

Ma connexion action pour d'autres domaines appelés par boucle

$authToken = $request->getParameter('auth_token'); 
// $user = get user from token (...) 


    $this->getUser()->signIn($user); 
    echo $this->getUser()->isAuthenticated() // returns true; 
    return sfView::NONE; 

Si je vais à ce domaine l'utilisateur n'est pas authentifié. Si j'appelle directement l'action, la session est persistante.

Merci pour votre aide.

+0

Les cookies ne sont pas définies dans l'être appelé url par boucle. – brpaz

Répondre

0

Pour SSO/authentification dans les applications de différents domaines, je recommande d'utiliser SAML

Vous utilisez php donc SimpleSAMLphp sera un logiciel agréable pour construire la partie IdP (fournisseur d'identité).

Pour mettre en œuvre le SP (Service Provider) pour le contrôle de ce projet symfony: sfSAMLPlugin

Questions connexes