Konfigurera xID med Azure Active Directory B2C för lösenordslös autentisering
I den här självstudien lär du dig att integrera Azure Active Directory B2C-autentisering (Azure AD B2C) med XID Digital ID-lösningen. XID-appen ger användarna lösenordslös, säker multifaktorautentisering. Kortet Mitt nummer, det digitala ID-kort som utfärdats av den japanska regeringen, verifierar xID-autentiserade användaridentiteter. För sina användare kan organisationer få verifierad personlig identifieringsinformation (kundinnehåll) via xID-API:et. Dessutom genererar xID-appen en privat nyckel i ett säkert område på mobila användarenheter, vilket gör dem till digitala signeringsenheter.
Förutsättningar
En Azure-prenumeration
- Om du inte har ett konto kan du skaffa ett kostnadsfritt Azure-konto
En Azure AD B2C-klientorganisation som är länkad till Azure-prenumerationen
Din xID-klientinformation som tillhandahålls av xID inc.
Gå till sidan xid.inc Kontakta oss för xID-klientinformation:
- Klient-ID
- Client Secret (Klienthemlighet)
- Omdirigerings-URL
- Omfattningar
Gå till x-id.me för att installera xID-appen på en mobil enhet:
- Mitt nummerkort
- Om du använder API UAT-versionen hämtar du UAT-versionen för xID-appen. Se, Kontakta oss
Scenariobeskrivning
Följande diagram visar arkitekturen.
- På Azure AD B2C-inloggningssidan loggar användaren in eller registrerar sig.
- Azure AD B2C omdirigerar användaren till xID-auktorisera API-slutpunkt med en OpenID Connect-begäran (OIDC). En OIDC-slutpunkt har slutpunktsinformation. xID-identitetsprovidern (IdP) omdirigerar användaren till inloggningssidan för xID-auktorisering. Användaren anger e-postadress.
- xID IdP skickar push-meddelanden till användarens mobila enhet.
- Användaren öppnar xID-appen, kontrollerar begäran, anger en PIN-kod eller använder biometri. xID-appen aktiverar den privata nyckeln och skapar en elektronisk signatur.
- xID-appen skickar signaturen till xID IdP för verifiering.
- En medgivandeskärm visas för att ge personlig information till tjänsten.
- xID IdP returnerar OAuth-auktoriseringskoden till Azure AD B2C.
- Azure AD B2C skickar en tokenbegäran med hjälp av auktoriseringskoden.
- xID IdP kontrollerar tokenbegäran. Om det är giltigt returneras OAuth-åtkomsttoken och ID-token med användaridentifierare och e-postadress.
- Om användarkundinnehåll behövs anropar Azure AD B2C xID-användardata-API:et.
- XID-användardata-API:et returnerar krypterat kundinnehåll. Användare dekrypterar med en privat nyckel som skapas när de begär xID-klientinformation.
- Användaren beviljas eller nekas åtkomst till kundprogrammet.
Installera xID
- Om du vill begära API-dokument fyller du i formuläret för begäran. Gå till Kontakta oss.
- I meddelandet anger du att du använder Azure AD B2C.
- En xID-säljare kontaktar dig.
- Följ anvisningarna i xID API-dokumentet.
- Begär en xID API-klient.
- xID-teknikteamet skickar klientinformation till dig inom 3–4 arbetsdagar.
- Ange en omdirigerings-URI på webbplatsen med hjälp av följande mönster. Användarna återgår till den efter autentisering.
https://<your-b2c-domain>.b2clogin.com/<your-b2c-domain>.onmicrosoft.com/oauth2/authresp
Registrera ett webbprogram i Azure AD B2C
Registrera program i en klientorganisation som du hanterar och sedan interagera med Azure AD B2C.
Läs mer: Programtyper som kan användas i Active Directory B2C
För testning registrerar https://jwt.ms
du , ett Microsoft-webbprogram med avkodat tokeninnehåll, som inte lämnar webbläsaren.
Registrera ett webbprogram och aktivera implicit beviljande av ID-token
Fullständig självstudie: Registrera ett webbprogram i Azure AD B2C
Skapa en xID-principnyckel
Lagra klienthemligheten från xID i din Azure AD B2C-klientorganisation. Använd katalogen med Azure AD B2C-klientorganisationen för följande instruktioner.
- Logga in på Azure-portalen.
- I portalens verktygsfält väljer du Kataloger + prenumerationer.
- I portalinställningarna | På sidan Kataloger + prenumerationer letar du upp din Azure AD B2C-katalog i listan Katalognamn.
- Välj Växla.
- I det övre vänstra hörnet i Azure Portal väljer du Alla tjänster.
- Sök efter och välj Azure AD B2C.
- I Översikt väljer du Identity Experience Framework.
- Välj Principnycklar.
- Välj Lägg till.
- För Alternativ väljer du Manuell.
- Ange en principnyckel Namn för principnyckeln. Prefixet
B2C_1A_
läggs till i nyckelnamnet. - I Hemlig anger du klienthemligheten från xID.
- För Nyckelanvändning väljer du Signatur.
- Välj Skapa.
Anteckning
I Azure AD B2C är anpassade principer för komplexa scenarier.
Konfigurera xID som identitetsprovider
För att användare ska kunna logga in med xID gör du xID till en anspråksprovider som Azure AD B2C kommunicerar med via en slutpunkt. Slutpunkten innehåller anspråk Azure AD B2C använder för att verifiera användare som autentiseras med digital identitet på sin enhet.
Lägga till xID som anspråksprovider
Hämta startpaketen för anpassad princip från GitHub och uppdatera sedan XML-filerna i Startpaketet för SocialAccounts med ditt Azure AD B2C-klientnamn.
Ladda ned zip-filen active-directory-b2c-policy-starterpack-main eller klona lagringsplatsen. Se Azure-Samples/active-directory-b2c-custom-policy-starterpack.
I filerna i katalogen SocialAccounts ersätter du strängen
yourtenant
med namnet på din Azure AD B2C-klientorganisation. Blir till exempelyourtenant.onmicrosoft.com
contoso.onmicrosoft.com
.Öppna SocialAccounts/TrustFrameworkExtensions.xml.
Hitta elementet ClaimsProviders . Om det inte finns någon lägger du till den under rotelementet.
Lägg till en ny ClaimsProvider som liknar följande exempel:
<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">00000000-0000-0000-0000-000000000000</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>
Ange client_id med ditt xID-program-ID.
Välj Spara.
Lägga till en användarresa
Lägg till en identitetsprovider på inloggningssidorna.
- Om du har en anpassad användarresa går du till Lägg till identitetsprovidern till en användarresa. Annars skapar du en dubblett av en mallanvändarresa:
- Öppna TrustFrameworkBase.xmlfrån startpaketet.
- Leta upp och kopiera innehållet i elementet UserJourneys som innehåller
ID=SignUpOrSignIn
. - Öppna TrustFrameworkExtensions.xml och leta upp elementet UserJourneys. Om det inte finns någon lägger du till en.
- Klistra in innehållet i elementet UserJourney som underordnad elementet UserJourneys.
- Byt namn på användarens rese-ID. Till exempel
ID=CustomSignUpSignIn
Lägga till identitetsprovidern i en användarresa
Lägg till den nya identitetsprovidern i användarresan.
- Leta upp orkestreringsstegelementet med Type=
CombinedSignInAndSignUp
, eller Type=ClaimsProviderSelection
i användarresan. Det är vanligtvis det första orkestreringssteget. Elementet ClaimsProviderSelections har en identitetsproviderlista för inloggning. Ordningen på elementen styr ordningen på inloggningsknapparna. - Lägg till xml-elementet ClaimsProviderSelection .
- Ange värdet för TargetClaimsExchangeId till ett eget namn.
- Lägg till elementet ClaimsExchange .
- Ange ID :t till värdet för målanspråkens utbytes-ID. Den här ändringen länkar xID-knappen till
X-IDExchange
åtgärden. - Uppdatera värdet TechnicalProfileReferenceId till det tekniska profil-ID som du skapade (
X-ID-OIDC
). - Lägg till ett orchestration-steg för att anropa xID UserInfo-slutpunkten för att returnera anspråk om den autentiserade användaren
X-ID-Userdata
.
Följande XML visar orkestrering av användarens resa med xID-identitetsprovidern.
<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>
Det finns identitetsanspråk som xID har stöd för som en del av principen. Anspråksschemat är där du deklarerar anspråken. Elementet ClaimsSchema har en ClaimType-elementlista. Elementet ClaimType innehåller ID-attributet, som är anspråksnamnet.
- Öppna TrustFrameworksExtension.xml.
- Leta upp elementet BuildingBlocks .
- Lägg till följande ClaimType-element i elementet ClaimsSchema i TrustFrameworksExtension.xml-principen
<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>
Konfigurera principen för förlitande part
Principen för förlitande part, till exempel SignUpSignIn.xml, anger användarens resa Azure AD B2C körs.
- Leta upp elementet DefaultUserJourney i den förlitande parten.
- Uppdatera ReferenceId så att det matchar användarresans ID som du lade till i identitetsprovidern.
I följande exempel för xID-användarresan är ReferenceId inställt på 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>
Ladda upp den anpassade principen
Använd katalogen med Azure AD B2C-klientorganisationen för följande instruktioner.
- Logga in på Azure-portalen.
- I portalens verktygsfält väljer du Kataloger + prenumerationer.
- I portalinställningarna | Sidan Kataloger + prenumerationer i listan Katalognamn . leta reda på din Azure AD B2C-katalog.
- Välj Växla.
- I Azure Portal söker du efter och väljer Azure AD B2C.
- Under Principer väljer du Identity Experience Framework.
- Välj Överför anpassad princip.
- Ladda upp filerna i följande ordning:
- Grundläggande principfil:
TrustFrameworkBase.xml
- Tilläggsprincip:
TrustFrameworkExtensions.xml
- Princip för förlitande part:
SignUpSignIn.xml
Testa den anpassade principen
- I din Azure AD B2C-klientorganisation och under Principer väljer du Identity Experience Framework.
- Under Anpassade principer väljer du CustomSignUpSignIn.
- För Program väljer du det webbprogram som du registrerade.
Svars-URL:en är
https://jwt.ms
. - Välj Kör nu.
- Webbläsaren omdirigeras till inloggningssidan för xID.
- Webbläsaren omdirigeras till
https://jwt.ms
. Tokeninnehållet som returneras av Azure AD B2C visas.