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

Bibliothèques et frameworks PHP Discussion :

[SimpleSAMLphp] "State information lost" Elgg


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Par défaut [SimpleSAMLphp] "State information lost" Elgg
    Bonjour à tous.

    J'essai de mettre en place un SSO entre Elgg et eZ Publish.
    J'ai choisi d'utiliser SimpleSAMLphp pour faire ça.

    Comme beaucoup de monde j'ai un problème de "State information lost".

    Je travail en local sous windows.
    Pour le moment je me concentre sur la partie SimpleSAMLphp - Elgg

    Installation

    SimpleSAMLphp

    J’ai installé SimpleSAMLphp en IdP sur http://saml.loc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <VirtualHost *:80>
            ServerName saml.loc
            DocumentRoot "C:\wamp\www\saml\www"
            Alias /simplesaml "C:\wamp\www\saml\www"
    		<Directory "/simplesaml">    
    			allow from all 
    		</Directory>
    </VirtualHost>
    Je définis ma base d’identités dans authsource.php :
    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
    16
    $config = array(
    	'admin' => array(
    		'core:AdminPassword',
    	),
    	'example-userpass' => array(
    		'exampleauth:UserPass',
    		'student:studentpass' => array(
    			'uid' => array('test'),
    			'eduPersonAffiliation' => array('member', 'student'),
    		),
    		'employee:employeepass' => array(
    			'uid' => array('employee'),
    			'eduPersonAffiliation' => array('member', 'employee'),
    		),
    	)
    ) ;
    J’enregistre mes SP dans saml20-sp-remote.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $metadata['http://elgg.loc/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (
      'AssertionConsumerService' => 'http://elgg.loc/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',
      'SingleLogoutService' => 'http://elgg.loc/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',
    );
    Elgg
    J'ai installé Elgg sur http://elgg.loc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <VirtualHost *:80>
        ServerName elgg.loc
    	DocumentRoot "C:\wamp\www\elgg\www"
    	Alias /simplesaml "C:\wamp\www\elgg\simplesamlphp\www"
    </VirtualHost>
    J'utilise le module saml_login développé par uniquidNews
    http://community.elgg.org/plugins/838203/1.2

    J'ai configuré mon module comme cela dans mon interface d'administration de Elgg.
    Path of the SimpleSAMLPHP environment: C:\wamp\www\elgg\simplesamlphp
    The SP auth source you want to connect to elgg: default-sp
    The attribute whose value uniquely identifies a user object: uid

    Dans mon fichier authsource.php je définit mon IdP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $config = array(
    	'default-sp' => array(
    		'saml:SP',
    		'entityID' => NULL,
    		'idp' => 'http://saml.loc/simplesaml/saml2/idp/metadata.php',
    		'discoURL' => NULL,
    ));
    Dans mon fichier saml20-idp-remote.php je recopie les informations fournies par mon installation IdP de SimpleSAMLphp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $metadata['http://saml.loc/simplesaml/saml2/idp/metadata.php'] = array (
    	  'name' => array('Fr' => "Serveur d'identification"),
    	  'description' => "MON serveur d'identification à moi.",
    	  'metadata-set' => 'saml20-idp-remote',
    	  'entityid' => 'http://saml.loc/simplesaml/saml2/idp/metadata.php',
    	  'SingleSignOnService' => array (0 => array (
    		      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
    		      'Location' => 'http://saml.loc/simplesaml/saml2/idp/SSOService.php',
    	  ),),
    	  'SingleLogoutService' => 'http://saml.loc/simplesaml/saml2/idp/SingleLogoutService.php',
    	  'certData' => '...',
    	  'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
    );
    Utilisation
    Je me rends sur mon réseau social Elgg
    http://elgg.loc
    Le bouton « Uniquid » du module apparait bien dans le formulaire de connexion.
    Lorsque je clique dessus je suis bien redirigé vers mon IdP http://saml.loc ou je peux saisir mes identifiants.

    Mais lors que je reviens sur mon site j’obtiens le message suivant :

    State information lost, and no way to restart the request
    Si vous signalez cette erreur, veuillez aussi signaler l'identifiant de suivi qui permet de trouver votre session dans les logs accessibles à l'administrateur système : b2bdc2a41c
    Information de déboguage
    SimpleSAML_Error_NoState: NOSTATE
    Backtrace:
    2 C:\wamp\www\elgg\simplesamlphp\lib\SimpleSAML\Auth\State.php:240 (SimpleSAML_Auth_State::loadState)
    1 C:\wamp\www\elgg\simplesamlphp\modules\saml\www\sp\saml2-acs.php:68 (require)
    0 C:\wamp\www\elgg\simplesamlphp\www\module.php:135 (N/A)

    Debug
    J’ajoute du debug supplémentaire.

    Au début du fichier saml2-acs.php de SimpleSAMLphp installé dans elgg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print_r($_COOKIE);
    print_r($_SERVER['HTTP_COOKIE']);
    print_r($_SESSION);
    $_COOKIE
    Array
    (
    [Elgg] => 4s83pf02ep9a8tpl83a4190jt1
    )

    $_SERVER['HTTP_COOKIE']
    Elgg=4s83pf02ep9a8tpl83a4190jt1

    $_SESSION
    Undefined variable: _SESSION
    Je réactualise ma page :
    $_COOKIE
    Array
    (
    [Elgg] => 4s83pf02ep9a8tpl83a4190jt1
    [PHPSESSID] => 92814a4545e0ff9aa2fb093a6e8b3dea
    )

    $_SERVER['HTTP_COOKIE']
    Elgg=4s83pf02ep9a8tpl83a4190jt1; PHPSESSID=92814a4545e0ff9aa2fb093a6e8b3dea

    $_SESSION
    Undefined variable: _SESSION

    Je ne vois pas quoi faire pour résoudre mon problème.
    Merci par avance pour votre aide.
    Si vous avez des questions n’hésitez pas à les pauser afin que je puisse compléter l’exposé de mon problème.


    Quelques liens :
    http://fr.wikipedia.org/wiki/SAML
    http://code.google.com/p/simplesamlphp/wiki/LostState

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Par défaut Conflit de session php ?
    Dans l’hypothèse où mon problème viennes d'un conflit de session php j'ai configuré mon IdP afin qu'il stoke sa session dans SQLite :
    config.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $config = array (
    	//…
    	'store.type' => 'sql',
    	'store.sql.dsn' => 'sqlite:C:\wamp\www\saml\simpleSAMLphp_session_database.sq3',
    );
    Mais le problem persiste…

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