Dela via


Konfigurera registrering och inloggning med generiska OpenID-Anslut med Hjälp av Azure Active Directory B2C

Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.

OpenID Anslut är ett autentiseringsprotokoll som bygger på OAuth 2.0 och som kan användas för säker användarinloggning. De flesta identitetsprovidrar som använder det här protokollet stöds i Azure AD B2C.

Den här artikeln förklarar hur du kan lägga till anpassade OpenID-Anslut identitetsprovidrar i dina användarflöden.

Viktigt!

Dina slutpunkter måste uppfylla säkerhetskraven för Azure AD B2C. Äldre TLS-versioner och chiffer är inaktuella. Mer information finns i Azure AD B2C TLS- och chiffersvitkrav.

Förutsättningar

Lägg till identitetsprovidern

  1. Logga in på Azure Portal som global administratör för din Azure AD B2C-klientorganisationen.
  2. Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
  3. Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
  4. Välj Identitetsprovidrar och välj sedan Ny OpenID-Anslut provider.
  5. Ange ett Namn. Ange till exempel Contoso.

Definiera OpenId Anslut identitetsprovider genom att lägga till den i elementet ClaimsProviders i tilläggsfilen för principen.

  1. Öppna TrustFrameworkExtensions.xml.

  2. Hitta elementet ClaimsProviders . Om den inte finns lägger du till den under rotelementet.

  3. Lägg till en ny ClaimsProvider på följande sätt:

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Konfigurera identitetsprovidern

Varje OpenID-Anslut identitetsprovider beskriver ett metadatadokument som innehåller det mesta av den information som krävs för att utföra inloggning. Metadatadokumentet innehåller information som url:er som ska användas och platsen för tjänstens offentliga signeringsnycklar. Dokumentet OpenID Anslut metadata finns alltid på en slutpunkt som slutar i .well-known/openid-configuration. Ange dess metadata-URL för OpenID-Anslut identitetsprovider som du vill lägga till.

I metadata-URL:en anger du URL:en för dokumentet OpenID Anslut metadata.

I metadata för teknisk <Item Key="METADATA"> profil anger du URL:en för dokumentet OpenID Anslut metadata.

Klient-ID och hemlighet

För att tillåta användare att logga in kräver identitetsprovidern att utvecklare registrerar ett program i sin tjänst. Det här programmet har ett ID som kallas klient-ID och en klienthemlighet.

Klienthemligheten är valfri. Du måste dock ange en klienthemlighet om svarstypen är code, som använder hemligheten för att byta ut koden mot token.

Om du vill lägga till klient-ID och klienthemlighet kopierar du dessa värden från identitetsprovidern och anger dem i motsvarande fält.

I metadata för teknisk <Item Key="client_id"> profil anger du klient-ID:t.

Skapa en principnyckel

Om klienthemlighet krävs lagrar du klienthemligheten som du tidigare registrerade i din Azure AD B2C-klientorganisation.

  1. Logga in på Azure-portalen.

  2. Kontrollera att du använder katalogen som innehåller din Azure AD B2C-klientorganisation. Välj filtret Katalog + prenumeration i portalens verktygsfält.

  3. I portalinställningarna | Sidan Kataloger + prenumerationer, leta upp din Azure AD B2C-katalog i listan Katalognamn och välj sedan Växla.

  4. Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.

  5. På sidan Översikt väljer du Identity Experience Framework.

  6. Välj Principnycklar och välj sedan Lägg till.

  7. För Alternativ väljer du Manual.

  8. Ange ett Namn för principnyckeln. Exempel: ContosoSecret Prefixet B2C_1A_ läggs automatiskt till i namnet på din nyckel.

  9. I Hemlighet anger du din klienthemlighet som du tidigare har registrerat.

  10. För Nyckelanvändning väljer du Signature.

  11. Klicka på Skapa.

  12. CryptographicKeys Lägg till följande element i XML-elementet:

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Definitionsområde

Omfånget definierar den information och de behörigheter som du vill samla in från din identitetsprovider, till exempel openid profile. Omfånget openid måste anges för att kunna ta emot ID-token från identitetsprovidern.

Utan ID-token kan användarna inte logga in på Azure AD B2C med hjälp av den anpassade identitetsprovidern. Andra omfång kan läggas till avgränsade med blanksteg. Se dokumentationen för den anpassade identitetsprovidern för att se vilka andra omfång som kan vara tillgängliga.

I omfånget anger du omfången från identitetsprovidern. Exempel: openid profile

I metadata för teknisk <Item Key="scope"> profil anger du omfången från identitetsprovidern. Exempel: openid profile

Svarstyp

Svarstypen beskriver vilken typ av information som skickas tillbaka i det första anropet till den authorization_endpoint anpassade identitetsproviderns. Följande svarstyper kan användas:

  • code: Enligt auktoriseringskodflödet returneras en kod tillbaka till Azure AD B2C. Azure AD B2C fortsätter att anropa token_endpoint för att byta kod för token.
  • id_token: En ID-token returneras tillbaka till Azure AD B2C från den anpassade identitetsprovidern.

I svarstypen väljer du code, eller id_token, enligt inställningarna för identitetsprovidern.

I metadata för teknisk <Item Key="response_types"> profil väljer du code, eller id_token enligt inställningarna för identitetsprovidern.

Svarsläge

Svarsläget definierar den metod som ska användas för att skicka tillbaka data från den anpassade identitetsprovidern till Azure AD B2C. Följande svarslägen kan användas:

  • form_post: Det här svarsläget rekommenderas för bästa säkerhet. Svaret överförs via HTTP-metoden POST , där koden eller token kodas i brödtexten application/x-www-form-urlencoded med formatet .
  • query: Koden eller token returneras som en frågeparameter.

I svarsläget väljer du form_post, eller query, enligt inställningarna för identitetsprovidern.

I metadata för den <Item Key="response_mode"> tekniska profilen väljer du form_post, eller query, enligt inställningarna för identitetsprovidern.

Domäntips

Domäntipset kan användas för att hoppa direkt till inloggningssidan för den angivna identitetsprovidern, i stället för att låta användaren göra ett val i listan över tillgängliga identitetsprovidrar.

Om du vill tillåta den här typen av beteende anger du ett värde för domäntipset. Om du vill hoppa till den anpassade identitetsprovidern lägger du till parametern domain_hint=<domain hint value> i slutet av din begäran när du anropar Azure AD B2C för inloggning.

I domäntipset anger du ett domännamn som används i domäntipset.

I XML-elementet för teknisk <Domain>contoso.com</Domain> profil anger du ett domännamn som används i domäntipset. Exempel: contoso.com

Anspråksmappning

När den anpassade identitetsprovidern skickar tillbaka en ID-token till Azure AD B2C måste Azure AD B2C kunna mappa anspråken från den mottagna token till de anspråk som Azure AD B2C känner igen och använder. För var och en av följande mappningar läser du dokumentationen för den anpassade identitetsprovidern för att förstå de anspråk som returneras i identitetsproviderns token:

  • Användar-ID: Ange det anspråk som tillhandahåller den unika identifieraren för den inloggade användaren.
  • Visningsnamn: Ange det anspråk som innehåller visningsnamnet eller det fullständiga namnet för användaren.
  • Förnamn: Ange anspråket som innehåller användarens förnamn .
  • Efternamn: Ange det anspråk som innehåller användarens efternamn .
  • E-post: Ange anspråket som anger användarens e-postadress .

Elementet OutputClaims innehåller en lista över anspråk som returneras av identitetsprovidern. Mappa namnet på anspråket som definierats i principen till det namn som definierats i identitetsprovidern. Under elementet <OutputClaims> konfigurerar du PartnerClaimType attributet med motsvarande anspråksnamn enligt definitionen av din identitetsprovider.

ClaimTypeReferenceId PartnerClaimType
issuerUserId Ange det anspråk som tillhandahåller den unika identifieraren för den inloggade användaren.
displayName Ange det anspråk som innehåller visningsnamnet eller det fullständiga namnet för användaren.
givenName Ange anspråket som innehåller användarens förnamn .
surName Ange det anspråk som innehåller användarens efternamn .
email Ange anspråket som anger användarens e-postadress .
identityProvider Ange det anspråk som innehåller namnet på token utfärdaren. Exempel: iss Om identitetsprovidern inte innehåller utfärdaranspråket i token anger du DefaultValue attributet med en unik identifierare för din identitetsprovider. Exempel: DefaultValue="contoso.com"

Lägga till identitetsprovidern i ett användarflöde

  1. I din Azure AD B2C-klient väljer du Användarflöden.
  2. Klicka på det användarflöde som du vill lägga till identitetsprovidern.
  3. Under Leverantörer av sociala identiteter väljer du den identitetsprovider som du har lagt till. Till exempel Contoso.
  4. Välj Spara.

Testa användarflödet

  1. Om du vill testa principen väljer du Kör användarflöde.
  2. För Program väljer du webbprogrammet med namnet testapp1 som du registrerade tidigare. Svars-URL :en ska visa https://jwt.ms.
  3. Välj knappen Kör användarflöde.
  4. På registrerings- eller inloggningssidan väljer du den identitetsprovider som du vill logga in på. Till exempel Contoso.

Om inloggningsprocessen lyckas omdirigeras webbläsaren till https://jwt.ms, som visar innehållet i token som returneras av Azure AD B2C.

Lägga till en användarresa

I det här läget har identitetsprovidern konfigurerats, men den är ännu inte tillgänglig på någon av inloggningssidorna. Om du inte har en egen anpassad användarresa skapar du en dubblett av en befintlig mallanvändarresa, annars fortsätter du till nästa steg.

  1. Öppna filen TrustFrameworkBase.xml från startpaketet.
  2. Hitta och kopiera hela innehållet i elementet UserJourney som innehåller Id="SignUpOrSignIn".
  3. Öppna TrustFrameworkExtensions.xml och leta upp elementet UserJourneys. Om elementet inte finns lägger du till ett.
  4. Klistra in hela innehållet i elementet UserJourney som du kopierade som underordnat elementet UserJourneys .
  5. Byt namn på ID:t för användarresan. Exempel: Id="CustomSignUpSignIn"

Lägga till identitetsprovidern i en användarresa

Nu när du har en användarresa lägger du till den nya identitetsprovidern i användarresan. Du lägger först till en inloggningsknapp och länkar sedan knappen till en åtgärd. Åtgärden är den tekniska profil som du skapade tidigare.

  1. Leta reda på orkestreringsstegelementet som innehåller Type="CombinedSignInAndSignUp", eller Type="ClaimsProviderSelection" i användarresan. Det är vanligtvis det första orkestreringssteget. Elementet ClaimsProviderSelections innehåller en lista över identitetsprovidrar som en användare kan logga in med. Ordningen på elementen styr ordningen på de inloggningsknappar som visas för användaren. Lägg till ett ClaimsProviderSelection XML-element. Ange värdet för TargetClaimsExchangeId till ett eget namn.

  2. I nästa orkestreringssteg lägger du till ett ClaimsExchange-element . Ange ID:t till värdet för målanspråkets utbytes-ID. Uppdatera värdet för TechnicalProfileReferenceId till ID:t för den tekniska profil som du skapade tidigare.

Följande XML visar de två första orkestreringsstegen för en användarresa med identitetsprovidern:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

Konfigurera principen för förlitande part

Principen för förlitande part, till exempel SignUpSignIn.xml, anger den användarresa som Azure AD B2C ska köra. Hitta elementet DefaultUserJourney i den förlitande parten. Uppdatera ReferenceId så att det matchar användarens rese-ID, där du lade till identitetsprovidern.

I följande exempel CustomSignUpSignIn för användarresan är ReferenceId inställt på CustomSignUpSignIn:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Ladda upp den anpassade principen

  1. Logga in på Azure-portalen.
  2. Välj ikonen Katalog + prenumeration i portalens verktygsfält och välj sedan den katalog som innehåller din Azure AD B2C-klientorganisation.
  3. I Azure-portalen söker du efter och väljer Azure AD B2C.
  4. Under Principer väljer du Identity Experience Framework.
  5. Välj Överför anpassad princip och ladda sedan upp de två principfilerna som du ändrade i följande ordning: tilläggsprincipen, till exempel TrustFrameworkExtensions.xml, och sedan den förlitande partprincipen, till exempel SignUpSignIn.xml.
  1. Välj din princip för förlitande part, till exempel B2C_1A_signup_signin.
  2. För Program väljer du ett webbprogram som du registrerade tidigare. Svars-URL :en ska visa https://jwt.ms.
  3. Välj knappen Kör nu.
  4. På registrerings- eller inloggningssidan väljer du Contoso för att logga in med Google-kontot.

Om inloggningsprocessen lyckas omdirigeras webbläsaren till https://jwt.ms, som visar innehållet i token som returneras av Azure AD B2C.

Kända problem

  • Azure AD B2C stöder inte JWE (JSON-webbkryptering) för utbyte av krypterade token med OpenID Connect-identitetsprovidrar.

Nästa steg

Mer information finns i referensguiden för OpenId Anslut teknisk profil.