Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.
Dans ce tutoriel, découvrez comment intégrer l’authentification Azure Active Directory B2C (Azure AD B2C) à la solution d’ID numérique xID. L'application xID fournit aux utilisateurs une authentification sécurisée et multifacteur sans mot de passe. La carte Mon numéro, la carte d’identification numérique émise par le gouvernement japonais, vérifie les identités utilisateur authentifiées par xID. Pour leurs utilisateurs, les organisations peuvent obtenir des informations d’identification personnelle vérifiées (contenu client) via l’API xID. En outre, l’application xID génère une clé privée dans une zone sécurisée dans les appareils mobiles utilisateur, ce qui en fait des appareils de signature numérique.
Conditions préalables
Un abonnement Azure
- Si vous n’en avez pas, vous pouvez obtenir un compte gratuit Azure
Un locataire Azure AD B2C lié à l’abonnement Azure
Vos informations clientes xID fournies par xID inc.
Accédez à la page xid.inc Contactez-nous pour obtenir des informations sur le client xID :
- ID de client
- Clé secrète client
- URL de redirection
- Étendues
Accédez à x-id.me pour installer l’application xID sur un appareil mobile :
- Ma carte numérique
- Si vous utilisez la version UAT de l’API, obtenez la version UAT de l’application xID. Voir, Contactez-nous
Description du scénario
Le diagramme suivant montre l’architecture.
- Dans la page de connexion Azure AD B2C, l’utilisateur se connecte ou s’inscrit.
- Azure AD B2C redirige l’utilisateur vers le point de terminaison de l’API d’autorisation xID à l’aide d’une requête OpenID Connect (OIDC). Un point de terminaison OIDC contient des informations de point de terminaison. Le fournisseur d’identité xID redirige l’utilisateur vers la page de connexion d’autorisation xID. L’utilisateur entre l’adresse e-mail.
- Le fournisseur d’identité xID envoie la notification Push à l’appareil mobile de l’utilisateur.
- L’utilisateur ouvre l’application xID, vérifie la demande, entre un code confidentiel ou utilise la biométrie. L’application xID active la clé privée et crée une signature électronique.
- L’application xID envoie la signature au fournisseur d’identité xID pour la vérification.
- Un écran de consentement s’affiche pour donner des informations personnelles au service.
- Le fournisseur d’identité xID retourne le code d’autorisation OAuth à Azure AD B2C.
- Azure AD B2C envoie une demande de jeton à l’aide du code d’autorisation.
- Le fournisseur d’identité xID vérifie la demande de jeton. S’il est valide, le jeton d’accès OAuth est retourné et le jeton d’ID avec l’identificateur de l’utilisateur et l’adresse e-mail.
- Si le contenu du client utilisateur est nécessaire, Azure AD B2C appelle l’API de données utilisateur xID.
- L’API de données utilisateur xID retourne du contenu client chiffré. Les utilisateurs déchiffrent avec une clé privée, créé lors de la demande d’informations sur le client xID.
- L’utilisateur est accordé ou refusé l’accès à l’application cliente.
Installer xID
- Pour demander des documents d’API, remplissez le formulaire de demande. Accédez à Nous contacter.
- Dans le message, indiquez que vous utilisez Azure AD B2C.
- Un représentant commercial xID vous contacte.
- Suivez les instructions du document d’API xID.
- Demandez un client d’API xID.
- L’équipe technique xID vous envoie des informations client en 3 à 4 jours ouvrables.
- Fournissez un URI de redirection dans votre site à l’aide du modèle suivant. Les utilisateurs y retournent après l’authentification.
https://<your-b2c-domain>.b2clogin.com/<your-b2c-domain>.onmicrosoft.com/oauth2/authresp
Inscrire une application web dans Azure AD B2C
Inscrivez des applications dans un locataire que vous gérez, puis elles peuvent interagir avec Azure AD B2C.
En savoir plus : Types d’applications qui peuvent être utilisés dans Active Directory B2C
Pour les tests, vous inscrivez https://jwt.ms
, une application web Microsoft avec du contenu de jeton décodé, qui ne quitte pas votre navigateur.
Inscrire une application web
Suivez les étapes du tutoriel : Inscrire une application web dans l’article Azure Active Directory B2C .
Créer une clé de stratégie xID
Stockez la clé secrète client xID dans votre locataire Azure AD B2C. Pour les instructions suivantes, utilisez le répertoire avec le locataire Azure AD B2C.
- Connectez-vous au portail Azure.
- Dans la barre d’outils du portail, sélectionnez Répertoires + abonnements.
- Sur les paramètres du portail | Répertoires + page abonnements , dans la liste des noms d’annuaire, recherchez votre répertoire Azure AD B2C.
- Sélectionnez Basculer.
- Dans le coin supérieur gauche du portail Azure, sélectionnez Tous les services.
- Recherchez et sélectionnez Azure AD B2C.
- Dans Vue d’ensemble, sélectionnez Identity Experience Framework.
- Sélectionnez Clés de stratégie.
- Sélectionnez Ajouter.
- Pour options, sélectionnez Manuel.
- Entrez un nom de clé de stratégie pour la clé de stratégie. Le préfixe
B2C_1A_
est ajouté au nom de clé. - Dans Secret, entrez le secret client à partir de xID.
- Pour l’utilisation de la clé, sélectionnez Signature.
- Cliquez sur Créer.
Remarque
Dans Azure AD B2C, les stratégies personnalisées sont destinées à des scénarios complexes.
Consultez la vue d’ensemble des flux utilisateur et des stratégies personnalisées.
Configurer xID en tant que fournisseur d’identité
Pour que les utilisateurs se connectent à l’aide de xID, rendez xID un fournisseur de revendications avec lequel Azure AD B2C communique via un point de terminaison. Le point de terminaison fournit des revendications utilisées par Azure AD B2C pour vérifier l’authentification des utilisateurs sur leur appareil avec un ID numérique.
Ajouter xID en tant que fournisseur de revendications
Obtenez les packs de démarrage de stratégie personnalisés à partir de GitHub, puis mettez à jour les fichiers XML dans le pack de démarrage SocialAccounts avec le nom de votre locataire Azure AD B2C.
Téléchargez le fichier zip active-directory-b2c-policy-starterpack-main ou clonez le référentiel. Consultez Azure-Samples/active-directory-b2c-custom-policy-starterpack.
Dans les fichiers du répertoire SocialAccounts , remplacez la chaîne
yourtenant
par le nom de votre locataire Azure AD B2C. Par exemple,yourtenant.onmicrosoft.com
devientcontoso.onmicrosoft.com
.Ouvrez le SocialAccounts/TrustFrameworkExtensions.xml.
Recherchez l’élément ClaimsProviders . S’il n’en existe pas, ajoutez-le sous l’élément racine.
Ajoutez un nouveau ClaimsProvider similaire à l’exemple suivant :
<ClaimsProvider> <Domain>X-ID</Domain> <DisplayName>X-ID</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="X-ID-OIDC"> <DisplayName>X-ID</DisplayName> <Description>Login with your X-ID account</Description> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://oidc-uat.x-id.io/.well-known/openid-configuration</Item> <!-- Update the Client ID below to the X-ID Application ID --> <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid verification</Item> <Item Key="response_mode">query</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> <Item Key="DiscoverMetadataByTokenIssuer">true</Item> <Item Key="token_endpoint_auth_method">client_secret_basic</Item> <Item Key="ClaimsEndpoint">https://oidc-uat.x-id.io/userinfo</Item> <Item Key="ValidTokenIssuerPrefixes">https://oidc-uat.x-id.io/</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_XIDSecAppSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" /> <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid" /> <OutputClaim ClaimTypeReferenceId="email" /> <OutputClaim ClaimTypeReferenceId="sid" /> <OutputClaim ClaimTypeReferenceId="userdataid" /> <OutputClaim ClaimTypeReferenceId="XID_verified" /> <OutputClaim ClaimTypeReferenceId="email_verified" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" DefaultValue="https://oidc-uat.x-id.io/" /> <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> <TechnicalProfile Id="X-ID-Userdata"> <DisplayName>Userdata (Personal Information)</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="ServiceUrl">https://api-uat.x-id.io/v4/verification/userdata</Item> <Item Key="SendClaimsIn">Header</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="UseClaimAsBearerToken">identityProviderAccessToken</Item> <!-- <Item Key="AllowInsecureAuthInProduction">true</Item> --> <Item Key="DebugMode">true</Item> <Item Key="DefaultUserMessageIfRequestFailed">Can't process your request right now, please try again later.</Item> </Metadata> <InputClaims> <!-- Claims sent to your REST API --> <InputClaim ClaimTypeReferenceId="identityProviderAccessToken" /> </InputClaims> <OutputClaims> <!-- Claims parsed from your REST API --> <OutputClaim ClaimTypeReferenceId="last_name" /> <OutputClaim ClaimTypeReferenceId="first_name" /> <OutputClaim ClaimTypeReferenceId="previous_name" /> <OutputClaim ClaimTypeReferenceId="year" /> <OutputClaim ClaimTypeReferenceId="month" /> <OutputClaim ClaimTypeReferenceId="date" /> <OutputClaim ClaimTypeReferenceId="prefecture" /> <OutputClaim ClaimTypeReferenceId="city" /> <OutputClaim ClaimTypeReferenceId="address" /> <OutputClaim ClaimTypeReferenceId="sub_char_common_name" /> <OutputClaim ClaimTypeReferenceId="sub_char_previous_name" /> <OutputClaim ClaimTypeReferenceId="sub_char_address" /> <OutputClaim ClaimTypeReferenceId="gender" /> <OutputClaim ClaimTypeReferenceId="verified_at" /> </OutputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Définissez client_id avec votre ID d’application xID.
Cliquez sur Enregistrer.
Ajouter un parcours utilisateur
Ajoutez un fournisseur d’identité aux pages de connexion.
- Si vous avez un parcours utilisateur personnalisé, accédez à Ajouter le fournisseur d’identité à un parcours utilisateur. Sinon, créez un doublon d’un parcours utilisateur de modèle :
- Dans le pack de démarrage, ouvrez TrustFrameworkBase.xml.
- Recherchez et copiez le contenu de l’élément UserJourneys qui inclut
ID=SignUpOrSignIn
. - Ouvrez le TrustFrameworkExtensions.xml et recherchez l’élément UserJourneys. S’il n’y en a pas, ajoutez-en un.
- Collez le contenu de l’élément UserJourney en tant qu’enfant de l’élément UserJourneys.
- Renommez l’ID de parcours utilisateur. Par exemple,
ID=CustomSignUpSignIn
Ajouter le fournisseur d’identité à un parcours utilisateur
Ajoutez le nouveau fournisseur d’identité au parcours utilisateur.
- Recherchez l’élément d’étape d’orchestration avec Type=
CombinedSignInAndSignUp
ou Type=ClaimsProviderSelection
dans le parcours utilisateur. Il s’agit généralement de la première étape d’orchestration. L’élément ClaimsProviderSelections contient une liste de fournisseurs d’identité pour la connexion. L’ordre des éléments contrôle l’ordre des boutons de connexion. - Ajoutez un élément XML ClaimsProviderSelection .
- Définissez la valeur de TargetClaimsExchangeId sur un nom convivial.
- Ajoutez un élément ClaimsExchange .
- Définissez l’ID sur la valeur de l’ID cible d’échange des revendications. Cette modification lie le bouton xID à l’action
X-IDExchange
. - Mettez à jour la valeur TechnicalProfileReferenceId avec l’ID de profil technique que vous avez créé (
X-ID-OIDC
). - Ajoutez une étape d’orchestration pour appeler un point de terminaison UserInfo xID afin qu’il renvoie des revendications sur l’utilisateur authentifié
X-ID-Userdata
.
Le code XML suivant illustre l’orchestration du parcours utilisateur avec le fournisseur d’identité xID.
<UserJourney Id="CombinedSignInAndSignUp">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="X-IDExchange" />
</ClaimsProviderSelections>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="X-IDExchange" TechnicalProfileReferenceId="X-ID-OIDC" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="X-ID-Userdata" TechnicalProfileReferenceId="X-ID-Userdata" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- For social IDP authentication, attempt to find the user account in the directory. -->
<OrchestrationStep Order="4" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- Show self-asserted page only if the directory does not have the user account already (i.e. we do not have an objectId). -->
<OrchestrationStep Order="5" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- The previous step (SelfAsserted-Social) could have been skipped if there were no attributes to collect
from the user. So, in that case, create the user in the directory if one does not already exist
(verified using objectId which would be set from the last step if account was created in the directory. -->
<OrchestrationStep Order="6" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
Il existe des revendications d’identité que xID prend en charge et qui sont référencées dans le cadre de la stratégie. Le schéma de revendications est l’endroit où vous déclarez les revendications. L’élément ClaimsSchema a une liste d’éléments ClaimType. L’élément ClaimType contient l’attribut ID, qui est le nom de la revendication.
- Ouvrez le TrustFrameworksExtension.xml.
- Recherchez l’élément BuildingBlocks .
- Ajoutez l’élément ClaimType suivant dans l’élément ClaimsSchema de la stratégie TrustFrameworksExtension.xml
<BuildingBlocks>
<ClaimsSchema>
<!-- xID -->
<ClaimType Id="sid">
<DisplayName>sid</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="userdataid">
<DisplayName>userdataid</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="xid_verified">
<DisplayName>xid_verified</DisplayName>
<DataType>boolean</DataType>
</ClaimType>
<ClaimType Id="email_verified">
<DisplayName>email_verified</DisplayName>
<DataType>boolean</DataType>
</ClaimType>
<ClaimType Id="identityProviderAccessToken">
<DisplayName>Identity Provider Access Token</DisplayName>
<DataType>string</DataType>
<AdminHelpText>Stores the access token of the identity provider.</AdminHelpText>
</ClaimType>
<ClaimType Id="last_name">
<DisplayName>last_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="first_name">
<DisplayName>first_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="previous_name">
<DisplayName>previous_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="year">
<DisplayName>year</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="month">
<DisplayName>month</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="date">
<DisplayName>date</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="prefecture">
<DisplayName>prefecture</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="city">
<DisplayName>city</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="address">
<DisplayName>address</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="sub_char_common_name">
<DisplayName>sub_char_common_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="sub_char_previous_name">
<DisplayName>sub_char_previous_name</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="sub_char_address">
<DisplayName>sub_char_address</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="verified_at">
<DisplayName>verified_at</DisplayName>
<DataType>int</DataType>
</ClaimType>
<ClaimType Id="gender">
<DisplayName>Gender</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OpenIdConnect" PartnerClaimType="gender" />
</DefaultPartnerClaimTypes>
<AdminHelpText>The user's gender.</AdminHelpText>
<UserHelpText>Your gender.</UserHelpText>
<UserInputType>TextBox</UserInputType>
</ClaimType>
<ClaimType Id="correlationId">
<DisplayName>correlation ID</DisplayName>
<DataType>string</DataType>
</ClaimType>
<!-- xID -->
</ClaimsSchema>
</BuildingBlocks>
Configurer la stratégie de partie de confiance
La stratégie de la partie de confiance, par exemple SignUpSignIn.xml, spécifie le parcours utilisateur exécuté par Azure AD B2C.
- Dans la partie de confiance, recherchez l’élément DefaultUserJourney.
- Mettez à jour l’Id de référence pour qu’il corresponde à l’ID de parcours utilisateur que vous avez ajouté au fournisseur d’identité.
Dans l’exemple suivant, pour le parcours utilisateur xID, l’Id de référence est défini sur CombinedSignInAndSignUp
.
<RelyingParty>
<DefaultUserJourney ReferenceId="CombinedSignInAndSignUp" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
<OutputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />
<OutputClaim ClaimTypeReferenceId="issuerUserId" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
<OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="last_name" />
<OutputClaim ClaimTypeReferenceId="previous_name" />
<OutputClaim ClaimTypeReferenceId="year" />
<OutputClaim ClaimTypeReferenceId="month" />
<OutputClaim ClaimTypeReferenceId="date" />
<OutputClaim ClaimTypeReferenceId="prefecture" />
<OutputClaim ClaimTypeReferenceId="city" />
<OutputClaim ClaimTypeReferenceId="address" />
<OutputClaim ClaimTypeReferenceId="sub_char_common_name" />
<OutputClaim ClaimTypeReferenceId="sub_char_previous_name" />
<OutputClaim ClaimTypeReferenceId="sub_char_address" />
<OutputClaim ClaimTypeReferenceId="gender" />
<OutputClaim ClaimTypeReferenceId="verified_at" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="sid" />
<OutputClaim ClaimTypeReferenceId="userdataid" />
<OutputClaim ClaimTypeReferenceId="xid_verified" />
<OutputClaim ClaimTypeReferenceId="email_verified" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
Téléchargez la stratégie personnalisée
Pour les instructions suivantes, utilisez le répertoire avec le locataire Azure AD B2C.
- Connectez-vous au portail Azure.
- Dans la barre d’outils du portail, sélectionnez les répertoires + abonnements.
- Dans la page Paramètres du portail | Répertoires + abonnements, dans la liste Nom de répertoire. recherchez votre répertoire Azure AD B2C.
- Sélectionnez Basculer.
- Dans le portail Azure, recherchez et sélectionnez Azure AD B2C.
- Sous Stratégies, sélectionnez Identity Experience Framework.
- Sélectionnez Charger une stratégie personnalisée.
- Chargez les fichiers dans l’ordre suivant :
- Fichier de stratégie de base :
TrustFrameworkBase.xml
- Stratégie d’extension :
TrustFrameworkExtensions.xml
- Stratégie de partie de confiance :
SignUpSignIn.xml
Tester la stratégie personnalisée
- Dans votre locataire Azure AD B2C, puis, sous Stratégies, sélectionnez Identity Experience Framework.
- Sous Stratégies personnalisées, sélectionnez CustomSignUpSignIn.
- Pour l’application, sélectionnez l’application web que vous avez inscrite.
L’URL de réponse est
https://jwt.ms
. - Sélectionnez Exécuter maintenant.
- Le navigateur redirige vers la page de connexion xID.
- Le navigateur est redirigé vers
https://jwt.ms
. Le contenu du jeton retourné par Azure AD B2C s’affiche.