| 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> |