Mapper les attributs SAML avec Auth0 comme module complémentaire IdP/SAML
Par exemple, un utilisateur saisit son nom d’utilisateur et son mot de passe avec succès, mais ne parvient pas à se connecter à l’application alors que les journaux de l’Auth0 Dashboard indiquent des événements de connexion réussis. Ou encore, il manque à votre application des informations sur l’utilisateur telles que le nom ou l’adresse de courriel.
Cas d’utilisation
Le profil utilisateur ci-dessous est un exemple pour les scénarios suivants.
//SAMPLE IdP User Profile
{
"created_at": "2021-06-21T13:26:08.579Z",
"email": "testuser@example.com",
...
"fav_genre": "fiction",
"user_metadata": {
"fav_streaming_service": "hulu"
}
...
}
Was this helpful?
Pas d’objet de mappage
Lors de l’utilisation du module complémentaire SAML2, un objet de mappage vide est généré par défaut.
Dans cet exemple, fav_genre
et user_metadata.fav_streaming_service
sont indéfinis mais peuvent être personnalisés et mappés à la réponse SAML remplie par Auth0.
Dans l’exemple ci-dessous, "fav_genre": « fiction »
est mappé sur l’attribut http://schemas.auth0.com/fav_genre dans la réponse SAML avec la valeur fiction
alors que "user_metadata": {"fav_streaming_service": "hulu"}
n’apparaît pas du tout dans la réponse SAML.
Réponse SAML résultante envoyée par l’IdP :
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_e30cb5f29249a82846eb" InResponseTo="_e33996d83f953ce46225185b3a1c0ad8" Version="2.0" IssueInstant="2021-11-03T21:34:42.493Z" Destination="https://example-dev-tenant.us.auth0.com/login/callback">
...
<saml:AttributeStatement xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<saml:Attribute Name="http://schemas.auth0.com/fav_genre" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">
fiction
</saml:AttributeValue>
</saml:Attribute>
...
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
Was this helpful?
Exemple de mappage standard
Dans l’exemple précédent, le fait de ne pas personnaliser l’objet de mappage a entraîné l’apparition d’un attribut http://schemas.auth0.com/fav_genre dans la réponse SAML, avec la valeur "fiction"
.
Ensuite, mappez les attributs dans l’objet de mappage des paramètres du module complémentaire SAML2 pour en tenir compte.
Vous remarquerez alors que la valeur "fiction"
est la même dans la réponse SAML, mais que le nom de l’attribut dans la réponse SAML a été modifié, passant de la valeur par défaut http://schemas.auth0.com/fav_fiction à http://schemas.auth0.com/books.
Configuration de l’objet de mappage de module complémentaire SAML2 :
"mappings": {
"fav_genre": "http://schemas.auth0.com/books"
}
Was this helpful?
Ce mappage donne la réponse suivante :
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_e30cb5f29249a82846eb" InResponseTo="_e33996d83f953ce46225185b3a1c0ad8" Version="2.0" IssueInstant="2021-11-03T21:34:42.493Z" Destination="https://example-dev-tenant.us.auth0.com/login/callback">
...
<saml:AttributeStatement xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<saml:Attribute Name="http://schemas.auth0.com/books" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">
fiction
</saml:AttributeValue>
</saml:Attribute>
...
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
Was this helpful?
Mappage de la même valeur à plusieurs attributs
Dans certains cas, il peut être nécessaire d’associer la réponse SAML à plusieurs attributs ayant la même valeur.
Dans ce cas, il est possible d’associer la même valeur du profil utilisateur à plusieurs attributs dans la réponse SAML.
Comment configurer l’objet de mappage de module complémentaire SAML2 :
"mappings": {
"fav_genre": [
"http://schemas.auth0.com/movies",
"http://schemas.auth0.com/books",
"http://schemas.auth0.com/television"
]
}
Was this helpful?
Ce mappage donne la réponse suivante :
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_e30cb5f29249a82846eb" InResponseTo="_e33996d83f953ce46225185b3a1c0ad8" Version="2.0" IssueInstant="2021-11-03T21:34:42.493Z" Destination="https://example-dev-tenant.us.auth0.com/login/callback">
...
<saml:AttributeStatement xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<saml:Attribute Name="http://schemas.auth0.com/movies" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">
fiction
</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="http://schemas.auth0.com/books" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">
fiction
</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="http://schemas.auth0.com/television" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">
fiction
</saml:AttributeValue>
</saml:Attribute>
...
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
Was this helpful?