===== SSO Azure AD 365 =====
Cette page decrit comment configurer un IDP shibboleth (v4.1.2) pour assurer une authentification SSO avec Azure AD
===== Azure AD =====
le SSO avec Azure AD suppose que les comptes de l'AD "on-premise" soient pre-provisionnés sur l'Azure AD "online". Ceci est le role de AzureAD Connect
* https://docs.microsoft.com/fr-fr/azure/architecture/reference-architectures/identity/azure-ad
* https://docs.microsoft.com/en-us/azure/active-directory/hybrid/plan-connect-topologies
===== References IDP shibboleth =====
references
* https://wiki.shibboleth.net/confluence/display/KB/Office+365
* https://github.com/zckb/azuread-shibboleth-docs/blob/master/azuread-sso-shibboleth-idp-20180607.docx?raw=true
{{ :docpublic:systemes:shibboleth:azuread-sso-shibboleth-idp-20180607-2.docx |}}
===== Parametrages IDP shibboleth =====
nous realisons cette configuration sur un IDP v4.1.2
==== Matadata MS online ====
il faut charger les metadata de Microsoft online dans notre IDP au moyen du fichier metadata-provider.xml
==== Configuration du relying party override ====
Azure AD ne gere pas les requetes d'authentification chiffrées, il faut donc declarer une exeption (ovverride) pour cet ServiceProvider / Entity ID de valeur "urn:federation:MicrosoftOnline" afinde lui positionner encryptAssertions="false"
==== 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.
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
"//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}
$1
\{AZUREADMDSGUIDB64\}(.+)
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"
==== aacli resolver ====
on peux tester la resolution d'attribut vers le SP MSOnline avec le script aacli.sh
[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=="
]
},