J'ai besoin de quelques conseils sur ma mise en œuvre SSO. J'ai fait quelques implémentations SAML2 avec succès mais il manque quelque chose sur celui-ci: -O Je pense que c'est mineur mais je ne suis pas sûr de ce qui me manque et je ne vois pas beaucoup d'informations dans les journaux côté agent: - /

Donc :

  • Initié par IDP
  • Je suis le SP utilisant OpenAm 10
  • Utilisation de l'agent J2EE
  • La même configuration fonctionne également sur la production pour d'autres clients
  • Implémentation SAML 2
  • Le domaine croisé est activé
  • Le certificat est chargé dans les métadonnées IDP du client de mon côté

Le problème est que lorsque j'obtiens la réponse du fournisseur, ils sont redirigés par le CDCSERVLET vers la page de connexion d'OpenAm .. Je ne comprends pas pourquoi ils ne sont pas authentifiés.

Voici la réponse:

<Response ID="_FAD290A87DB14BC4A8A8F435DEBDEBB3" Version="2.0" IssueInstant="2015-12-31T20:59:34.1012911Z" Destination="https://sso.com:443/sp/Consumer/metaAlias/xxx-test/sp" xmlns="urn:oasis:names:tc:SAML:2.0:protocol">
        <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">xxx</Issuer>
        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
                    <SignedInfo>
                               <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                                <Reference URI="#_FAD290A87DB14BC4A8A8F435DEBDEBB3">
                                            <Transforms>
                                                        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                                                        <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                            </Transforms>
                                            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                                            <DigestValue>HPTUTyPjegeyjDW5lmMb8ggbwas=</DigestValue>
                                </Reference>
                    </SignedInfo>
                    <SignatureValue>4Ek0xpDPj5Q==</SignatureValue>
        </Signature>
        <Status>
                    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
        </Status>
        <Assertion Version="2.0" ID="_BCA1E13E205E4CDCB7AB903E90606DBD" IssueInstant="2015-12-31T20:59:34.1012911Z" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
                    <Issuer>xxx</Issuer>
                    <Subject>
                                <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified">100</NameID>
                                <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
                                            <SubjectConfirmationData NotOnOrAfter="2015-12-31T21:04:34.1948917Z" Recipient="https://sso.com:443/sp/Consumer/metaAlias/xxx-test/sp"/>
                                </SubjectConfirmation>
                    </Subject>
                    <Conditions NotBefore="2015-12-31T20:54:34.1012911Z" NotOnOrAfter="2015-12-31T21:04:34.1012911Z">
                                <AudienceRestriction>
                                            <Audience>xxx-test:saml2</Audience>
                                </AudienceRestriction>
                    </Conditions>
                    <AuthnStatement AuthnInstant="2015-12-31T20:59:34.1012911Z">
                                <SubjectLocality Address="000.0.0.000"/>
                                <AuthnContext>
                                            <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
                                </AuthnContext>
                    </AuthnStatement>
                    <AttributeStatement>
                                <Attribute Name="AIN">
                                            <AttributeValue xsi:type="xsd:string">100</AttributeValue>
                                </Attribute>
                    </AttributeStatement>
        </Assertion>

Ce que j'ai noté dans cette affirmation est:

  • Il n'y a pas de certificat dans la signature (tous mes clients ont le dans la signature avec le certificat)

De mon côté pour le SP, je me suis assuré que:

  • Le contexte d'authentification est défini sur Mot de passe pour correspondre à l'assertion
  • Je désactive la fédération si le NameId n'est pas spécifié et j'utilise le NameId comme UserId

Tout cela devrait être bon de mon côté, et je ne comprends pas pourquoi le client est redirigé vers la page de connexion d'OpenAM

Toute aide serait géniale !!

Merci !

ÉDITER :

J'ai donc demandé au fournisseur de modifier l'assertion pour envoyer le <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">xxxx</NameID> Et j'ai ajouté un utilisateur au royaume, et je l'utilise comme utilisateur transitoire dans ma configuration SP, mais cela a entraîné le même problème !!

Lorsque le format nameid a été défini comme non spécifié, j'ai créé ces 100 utilisateurs dans le royaume en tant que sujet mais cela ne fonctionnait toujours pas: - /

EDIT 3: Voici quelques informations sur la Session:

<SessionNotification vers="1.0" notid="117627">
<Session sid="AQIC5wM2LY4SfcxfxdL6szA_aGlQEkFtHROifZHX_VpqHag.*AAJTSQACMDIAAlNLABM3OTI1OTk2NjE0MDA1MjA2MTcw*" stype="user" cid="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org" cdomain="dc=openam,dc=forgerock,dc=org" maxtime="60" maxidle="30" maxcaching="5" timeidle="1800" timeleft="1529" state="destroyed">
<Property name="CharSet" value="UTF-8"></Property>
<Property name="UserId" value="user-test"></Property>
<Property name="FullLoginURL" value="/sp/UI/Login?ForceAuthn=false&amp;MinorVersion=0&amp;RequestID=see601a9040131cc9c9d09947cf1addab3e4df292&amp;refererservlet=https%3A%2F%2Fs-----6ForceAuthn%3Dfalse%26ProviderID%3Dhttps%253A%252F%252Fstagingcng.inspirus365.com%253A443%252F%253FRealm%253D%25252F%26MinorVersion%3D0%26Federate%3Dfalse%26IssueInstant%3D2016-01-12T21%253A30%253A22Z%26MajorVersion%3D1&amp;IssueInstant=2016-01-12T21%3A30%3A22Z&amp;MajorVersion=1"></Property>
<Property name="successURL" value="/sp/console"></Property>
<Property name="cookieSupport" value="true"></Property>
<Property name="AuthLevel" value="0"></Property>
<Property name="SessionHandle" value="shandle:AQIC5wM2LY4SfcwZfnMFJVMF0olMGhmq-Nmqw_BMxoVv4AA.*AAJTSQACMDIAAlNLABM3OTI1OTk2NjE0MDA1MjA2MTcw*"></Property>
<Property name="UserToken" value="user-test"></Property>
<Property name="loginURL" value="/sp/UI/Login"></Property>
<Property name="Principals" value="user-test"></Property>
<Property name="Service" value="ldapService"></Property>
<Property name="sun.am.UniversalIdentifier" value="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org"></Property>
<Property name="amlbcookie" value="01"></Property>
<Property name="Organization" value="dc=openam,dc=forgerock,dc=org"></Property>
<Property name="Locale" value="en_US"></Property>
<Property name="HostName" value="205."></Property>
<Property name="AuthType" value="DataStore"></Property>
<Property name="Host" value="205."></Property>
<Property name="UserProfile" value="Ignore"></Property>
<Property name="clientType" value="genericHTML"></Property>
<Property name="AMCtxId" value="a0749ff708bff14202"></Property>
<Property name="SessionTimedOut" value="1452636294"></Property>
<Property name="authInstant" value="2016-01-12T21:30:33Z"></Property>
<Property name="Principal" value="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org"></Property>
</Session>

Ce qui m'a frappé, c'est le <Property name="AuthType" value="DataStore"></Property> (j'ai la Fédération d'autres fournisseurs: 0) Je suis sûr que le problème est dû au fait que l'utilisateur ne peut pas s'authentifier auprès d'OpenAM.

0
julien 5 janv. 2016 à 20:05

2 réponses

Meilleure réponse

Je l'ai compris ... Il s'est avéré que tout était bien configuré, mais notre partenaire publiait l'assertion sur l'URL du relais / cible et non sur l'URL du consommateur .....

0
julien 18 janv. 2016 à 16:26

Je suppose que l'autofédération est désactivée du côté du fournisseur de services (OpenAM) et que vous utilisez le NameID comme ID utilisateur.

Après avoir reçu l'assertion, le mappeur de compte SP essaiera de trouver un utilisateur avec cet ID utilisateur dans le magasin de données du royaume où le SP est défini. Vous pouvez trouver quel attribut LDAP est mappé à l'ID utilisateur en accédant à Contrôle d'accès> VOTRE REALM> Magasins de données> VOTRE DATASTORE. Recherchez une propriété appelée "Attribut de recherche des utilisateurs LDAP".

Dans ce cas particulier, la valeur NameID est "100", par conséquent, le mappeur de compte essaiera de trouver un utilisateur dans votre magasin de données avec cet ID utilisateur. Par exemple, si votre "Attribut de recherche des utilisateurs LDAP" est défini sur "uid", le mappeur de compte essaiera de trouver un utilisateur dans votre annuaire dont "uid" est égal à "100".

Je suppose donc que le mappeur de compte n'est pas en mesure de mapper l'assertion entrante à un utilisateur valide et qu'il vous amène à la page de connexion d'OpenAM.

J'espère que cela t'aides.

0
Guillermo R 6 janv. 2016 à 14:49