Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
docpublic:systemes:shibboleth:azure365 [2021/07/02 14:36] adminjp [Configuration du relying party override] |
docpublic:systemes:shibboleth:azure365 [2021/07/02 14:52] (current) adminjp [attribute resolver] |
==== attribute resolver ===== | ==== attribute resolver ===== |
| |
il faut que l'IDP envoit au SP MS-online un attribut "pivot" et identifiant unique entre le referentiel local (on-premise) et l'Azure AD | il faut que l'IDP envoit au SP MS-online un attribut "pivot" et identifiant unique entre le referentiel local (on-premise) et l'Azure AD. |
pour cela on utilise l'attribut mS-DS-ConsistencyGuid qui est généré dans l'AD on-premise suite a la premiere synchronisation avec Azure AD via l'outil de synchro Azure AD Connect . | Pour cela on utilise l'attribut mS-DS-ConsistencyGuid qui est généré dans l'AD on-premise suite a la premiere synchronisation avec Azure AD via l'outil de synchro Azure AD Connect . |
| |
https://docs.microsoft.com/fr-fr/azure/active-directory/hybrid/plan-connect-design-concepts | https://docs.microsoft.com/fr-fr/azure/active-directory/hybrid/plan-connect-design-concepts |
"//Utiliser ms-DS-ConsistencyGuid en tant qu’attribut sourceAnchor pour les objets utilisateur. ObjectGUID est utilisé pour d’autres types d’objets.//" | "//Utiliser ms-DS-ConsistencyGuid en tant qu’attribut sourceAnchor pour les objets utilisateur. ObjectGUID est utilisé pour d’autres types d’objets.//" |
| |
| On va nommer cet attribut ImmutableID dans les assertion SAML , mais il s'appuiera dans notre attribute-Resolver sur la valeur de mS-DS-ConsistencyGuid qu'il faut s'arrurer de disposer dans le referentiel ldap sur lequel s'appui l'IDP . Si l'IDP interroge directement un AD c'estdirectement disponible, autrement i lfaut le repliquer dans LDAP . C'est l'object de la tache LSC (synchro AD -> Ldap ) qui suit . |
| |
| Ensuite un identifiant plus lisible / userfirandly est utilisé pour l'affichage du nom de compte passé sur l'UPN (format mail) via l'attribut SAML UserId. |
| |
| Notre synchro AD -> LDAP reproduit la valeur de AD mS-DS-ConsistencyGuid dans l'attribut SupannRefId avec l'etiquette {AZUREADMDSGUIDB64} |
| |
| il faut donc dans l'attribute resolver (attribute-resolver-ldap.xml) definir un npouvel attribut id="ImmutableID" de type "Mapped" qui va chercher grace a une Regexp la valeur($1) base64 du supannRefID etiquette {AZUREADMDSGUIDB64} |
| |
| <code> |
| <AttributeDefinition id="ImmutableID" xsi:type="Mapped"> |
| <InputDataConnector ref="myLDAP" attributeNames="supannRefId" /> |
| <DefaultValue passThru="false"/> |
| <ValueMap> |
| <ReturnValue>$1</ReturnValue> |
| <SourceValue>\{AZUREADMDSGUIDB64\}(.+)</SourceValue> |
| </ValueMap> |
| </AttributeDefinition> |
| |
| <AttributeDefinition xsi:type="Simple" id="UserId" > |
| <InputDataConnector ref="myLDAP" attributeNames="mail"/> |
| </AttributeDefinition> |
| |
| </code> |
| |
| on a aussi definit le 2eme attribut qui est une simple reprise de attributeNames="mail" depuis LDAP |
| |
| il faut evidement recuperer ces attributs (mail et supannRefId) depuis le dataConnector "myldap" |
| |
| <code> |
| <DataConnector id="myLDAP" xsi:type="LDAPDirectory" |
| ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}" |
| baseDN="%{idp.attribute.resolver.LDAP.baseDN}" |
| principal="%{idp.attribute.resolver.LDAP.bindDN}" |
| principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}" |
| useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}" |
| connectTimeout="%{idp.attribute.resolver.LDAP.connectTimeout}" |
| trustFile="%{idp.attribute.resolver.LDAP.trustCertificates}" |
| responseTimeout="%{idp.attribute.resolver.LDAP.responseTimeout}" |
| connectionStrategy="%{idp.attribute.resolver.LDAP.connectionStrategy}" |
| noResultIsError="true" |
| multipleResultsIsError="true" |
| excludeResolutionPhases="c14n/attribute" |
| exportAttributes="mail displayName cn sn givenName departmentNumber employeeNumber uid eduPersonAffiliation supannRefId "> |
| <FilterTemplate> |
| <![CDATA[ |
| %{idp.attribute.resolver.LDAP.searchFilter} |
| ]]> |
| </FilterTemplate> |
| </code> |
| |
| |
| ==== aacli resolver ==== |
| |
| on peux tester la resolution d'attribut vers le SP MSOnline avec le script aacli.sh |
| |
| <code> |
| [root@idpx shibboleth-idp]# ./bin/aacli.sh --requester=urn:federation:MicrosoftOnline --configDir=conf/ --principal=testuser |
| { |
| "name": "mail", |
| "values": [ |
| "user.test@domain.fr" |
| ] |
| }, |
| |
| |
| { |
| "name": "cn", |
| "values": [ |
| "TEST User" |
| ] |
| }, |
| |
| |
| { |
| "name": "ImmutableID", |
| "values": [ |
| "m20WX2efJUarbMor/iewhQ==" |
| ] |
| }, |
| |
| </code> |