Nastavení registrace a přihlášení pomocí obecného openID Připojení pomocí Azure Active Directory B2C

Než začnete, pomocí selektoru Zvolit typ zásady zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody pro definování způsobu interakce uživatelů s vašimi aplikacemi: prostřednictvím předdefinovaných toků uživatelů nebo prostřednictvím plně konfigurovatelných vlastních zásad. Kroky vyžadované v tomto článku se pro každou metodu liší.

OpenID Připojení je ověřovací protokol založený na OAuth 2.0, který se dá použít pro zabezpečené přihlašování uživatelů. Většina zprostředkovatelů identity, kteří tento protokol používají, se podporuje v Azure AD B2C.

Tento článek vysvětluje, jak do toků uživatelů přidat vlastní zprostředkovatele identity OpenID Připojení.

Důležité

Vaše koncové body musí splňovat požadavky na zabezpečení Azure AD B2C. Starší verze protokolu TLS a šifry jsou zastaralé. Další informace najdete v tématu Požadavky na protokol TLS a šifrovací sadu Azure AD B2C.

Předpoklady

Přidání zprostředkovatele identity

  1. Přihlaste se k webu Azure Portal jako globální správce vašeho tenanta Azure AD B2C.
  2. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.
  3. Zvolte Všechny služby v levém horním rohu portálu Azure Portal a vyhledejte a vyberte Azure AD B2C.
  4. Vyberte zprostředkovatele identity a pak vyberte Nový zprostředkovatele OpenID Připojení.
  5. Zadejte Název. Zadejte například Contoso.

Definujte OpenId Připojení zprostředkovatele identity tak, že ho přidáte do elementu ClaimsProviders v souboru přípony vaší zásady.

  1. Otevřete Soubor TrustFrameworkExtensions.xml.

  2. Vyhledejte element ClaimsProviders . Pokud neexistuje, přidejte ho pod kořenový prvek.

  3. Přidejte nový ClaimsProvider následujícím způsobem:

    <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>
    

Konfigurace zprostředkovatele identity

Každý zprostředkovatel identity OpenID Připojení popisuje dokument metadat, který obsahuje většinu informací potřebných k přihlášení. Dokument metadat obsahuje informace, jako jsou adresy URL, které se mají použít, a umístění veřejných podpisových klíčů služby. OpenID Připojení dokumentu metadat se vždy nachází v koncovém bodu, který končí .well-known/openid-configuration. Pro openID Připojení zprostředkovatele identity, který chcete přidat, zadejte jeho adresu URL metadat.

Do adresy URL metadat zadejte adresu URL openID Připojení dokumentu metadat.

Do metadat technického <Item Key="METADATA"> profilu zadejte adresu URL dokumentu s metadaty OpenID Připojení.

ID klienta a tajný klíč

Aby se uživatelé mohli přihlásit, poskytovatel identity vyžaduje, aby vývojáři zaregistrovali aplikaci ve své službě. Tato aplikace má ID, které se označuje jako ID klienta a tajný klíč klienta.

Tajný klíč klienta je volitelný. Je však nutné zadat tajný klíč klienta, pokud je codetyp odpovědi , který používá tajný klíč k výměně kódu pro token.

Pokud chcete přidat ID klienta a tajný klíč klienta, zkopírujte tyto hodnoty zprostředkovatele identity a zadejte je do odpovídajících polí.

Do metadat technického <Item Key="client_id"> profilu zadejte ID klienta.

Vytvoření klíče zásad

Pokud se vyžaduje tajný klíč klienta, uložte tajný klíč klienta, který jste si předtím poznamenali ve svém tenantovi Azure AD B2C.

  1. Přihlaste se k portálu Azure.

  2. Ujistěte se, že používáte adresář, který obsahuje vašeho tenanta Azure AD B2C. Na panelu nástrojů portálu vyberte filtr Adresář a předplatné .

  3. V nastavení portálu | Adresářů a stránka předplatných , vyhledejte adresář Azure AD B2C v seznamu názvů adresářů a pak vyberte Přepnout.

  4. V levém horním rohu webu Azure Portal zvolte Všechny služby a pak vyhledejte a vyberte Azure AD B2C.

  5. Na stránce Přehled vyberte rozhraní Identity Experience Framework.

  6. Vyberte Klíče zásad a pak vyberte Přidat.

  7. V nabídce Možnosti zvolte Manual.

  8. Zadejte název klíče zásady. Například, ContosoSecret. Předpona B2C_1A_ se automaticky přidá do názvu klíče.

  9. V tajném kódu zadejte tajný klíč klienta, který jste předtím zaznamenali.

  10. V případě použití klíče vyberte Signature.

  11. Klikněte na Vytvořit.

  12. Do elementu CryptographicKeys XML přidejte následující prvek:

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

Obor

Obor definuje informace a oprávnění, která chcete shromáždit od zprostředkovatele identity, například openid profile. Aby bylo možné získat token ID od zprostředkovatele identity, openid musí být zadán obor.

Bez tokenu ID se uživatelé nemůžou přihlásit k Azure AD B2C pomocí vlastního zprostředkovatele identity. Ostatní obory je možné připojit oddělené mezerou. Informace o tom, jaké další obory můžou být dostupné, najdete v dokumentaci zprostředkovatele vlastní identity.

V oboru zadejte obory od zprostředkovatele identity. Například, openid profile.

Do metadat technického <Item Key="scope"> profilu zadejte obory od zprostředkovatele identity. Například, openid profile.

Typ odpovědi

Typ odpovědi popisuje, jaký druh informací se odešle zpět v počátečním volání authorization_endpoint vlastního zprostředkovatele identity. Můžete použít následující typy odpovědí:

  • code: Podle toku autorizačního kódu se kód vrátí zpět do Azure AD B2C. Azure AD B2C pokračuje voláním token_endpoint kódu pro výměnu kódu tokenu.
  • id_token: Token ID se vrátí zpět do Azure AD B2C z vlastního zprostředkovatele identity.

V typu Odpověď vyberte (codeneboid_token) podle nastavení zprostředkovatele identity.

V metadatech technického <Item Key="response_types"> profilu vyberte codenebo id_token podle nastavení zprostředkovatele identity.

Režim odpovědi

Režim odpovědi definuje metodu, která se má použít k odeslání dat zpět z vlastního zprostředkovatele identity do Azure AD B2C. Můžete použít následující režimy odezvy:

  • form_post: Tento režim odpovědi se doporučuje pro zajištění nejlepšího zabezpečení. Odpověď se přenáší prostřednictvím metody HTTP POST s kódem nebo tokenem kódovaným v těle pomocí application/x-www-form-urlencoded formátu.
  • query: Kód nebo token se vrátí jako parametr dotazu.

V režimu odezvy vyberte v form_postzávislosti na nastavení zprostředkovatele identity možnost nebo query.

V metadatech technického <Item Key="response_mode"> profilu vyberte v form_postzávislosti na nastavení zprostředkovatele identity položku nebo query.

Nápověda k doméně

Nápovědu k doméně je možné použít k přeskočení přímo na přihlašovací stránku zadaného zprostředkovatele identity místo toho, aby uživatel vybrali seznam dostupných zprostředkovatelů identity.

Pokud chcete tento druh chování povolit, zadejte hodnotu nápovědy k doméně. Pokud chcete přejít na vlastního zprostředkovatele identity, připojte parametr domain_hint=<domain hint value> na konec požadavku při volání Azure AD B2C pro přihlášení.

V nápovědě k doméně zadejte název domény použitý v nápovědě k doméně.

V elementu XML technického <Domain>contoso.com</Domain> profilu zadejte název domény použitý v nápovědě k doméně. Například, contoso.com.

Mapování deklarací identity

Jakmile vlastní zprostředkovatel identity odešle token ID zpět do Azure AD B2C, musí být Azure AD B2C schopný namapovat deklarace identity z přijatého tokenu na deklarace identity, které Azure AD B2C rozpozná a používá. Pro každé z následujících mapování se podívejte do dokumentace vlastního zprostředkovatele identity a seznamte se s deklaracemi, které se vrátí zpět v tokenech zprostředkovatele identity:

  • ID uživatele: Zadejte deklaraci identity, která poskytuje jedinečný identifikátor přihlášeného uživatele.
  • Zobrazovaný název: Zadejte deklaraci identity, která uživateli poskytne zobrazované jméno nebo celé jméno .
  • Dané jméno: Zadejte deklaraci identity, která poskytuje křestní jméno uživatele.
  • Příjmení: Zadejte deklaraci identity, která poskytuje příjmení uživatele.
  • E-mail: Zadejte deklaraci identity, která poskytuje e-mailovou adresu uživatele.

Element OutputClaims obsahuje seznam deklarací identity vrácených vaším zprostředkovatelem identity. Namapujte název deklarace identity definované ve vaší zásadě na název definovaný ve zprostředkovateli identity. Pod elementem <OutputClaims>PartnerClaimType nakonfigurujte atribut s odpovídajícím názvem deklarace identity definovaným vaším zprostředkovatelem identity.

ClaimTypeReferenceId PartnerClaimType
issuerUserId Zadejte deklaraci identity, která poskytuje jedinečný identifikátor přihlášeného uživatele.
displayName Zadejte deklaraci identity, která uživateli poskytne zobrazované jméno nebo celé jméno .
givenName Zadejte deklaraci identity, která obsahuje jméno uživatele.
surName Zadejte deklaraci identity, která obsahuje příjmení uživatele.
email Zadejte deklaraci identity, která poskytuje e-mailovou adresu uživatele.
identityProvider Zadejte deklaraci identity, která poskytuje název vystavitele tokenu. Například, iss. Pokud zprostředkovatel identity neobsahuje deklaraci identity v tokenu, nastavte DefaultValue atribut jedinečným identifikátorem vašeho zprostředkovatele identity. Například, DefaultValue="contoso.com".

Přidání zprostředkovatele identity do toku uživatele

  1. V tenantovi Azure AD B2C vyberte Toky uživatelů.
  2. Klikněte na tok uživatele, který chcete přidat zprostředkovatele identity.
  3. V části Zprostředkovatelé sociálních identit vyberte zprostředkovatele identity, který jste přidali. Například Contoso.
  4. Zvolte Uložit.

Testování toku uživatele

  1. Pokud chcete zásady otestovat, vyberte Spustit tok uživatele.
  2. V části Aplikace vyberte webovou aplikaci s názvem testapp1 , kterou jste předtím zaregistrovali. Adresa URL odpovědi by se měla zobrazit https://jwt.ms.
  3. Vyberte tlačítko Spustit tok uživatele.
  4. Na registrační nebo přihlašovací stránce vyberte zprostředkovatele identity, kterého chcete přihlásit. Například Contoso.

Pokud je proces přihlášení úspěšný, prohlížeč se přesměruje na https://jwt.msobsah tokenu vráceného službou Azure AD B2C.

Přidání cesty uživatele

V tuto chvíli je zprostředkovatele identity nastavený, ale zatím není k dispozici na žádné přihlašovací stránce. Pokud nemáte vlastní cestu uživatele, vytvořte duplikát existující cesty uživatele šablony, jinak pokračujte dalším krokem.

  1. Otevřete soubor TrustFrameworkBase.xml z úvodní sady.
  2. Najděte a zkopírujte celý obsah prvku UserJourney , který obsahuje Id="SignUpOrSignIn".
  3. Otevřete TrustFrameworkExtensions.xml a najděte element UserJourneys. Pokud prvek neexistuje, přidejte ho.
  4. Vložte celý obsah elementu UserJourney , který jste zkopírovali jako podřízený prvek UserJourneys .
  5. Přejmenujte ID cesty uživatele. Například, Id="CustomSignUpSignIn".

Přidání zprostředkovatele identity do cesty uživatele

Teď, když máte cestu uživatele, přidejte do cesty uživatele nového zprostředkovatele identity. Nejdřív přidáte tlačítko pro přihlášení a pak tlačítko propočítáte s akcí. Akce je technický profil, který jste vytvořili dříve.

  1. Najděte prvek kroku orchestrace, který zahrnuje Type="CombinedSignInAndSignUp"nebo Type="ClaimsProviderSelection" na cestě uživatelem. Obvykle se jedná o první krok orchestrace. Element ClaimsProviderSelections obsahuje seznam zprostředkovatelů identity, se kterými se uživatel může přihlásit. Pořadí prvků řídí pořadí tlačítek pro přihlášení, která jsou uživateli prezentována. Přidejte element XML ClaimsProviderSelection. Nastavte hodnotu TargetClaimsExchangeId na popisný název.

  2. V dalším kroku orchestrace přidejte element ClaimsExchange . Nastavte ID na hodnotu ID cílové výměny deklarací identity. Aktualizujte hodnotu TechnicalProfileReferenceId na ID technického profilu, který jste vytvořili dříve.

Následující KÓD XML ukazuje první dva kroky orchestrace cesty uživatele se zprostředkovatelem identity:

<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>

Konfigurace zásad předávající strany

Zásady předávající strany, například SignUpSignIn.xml, určují cestu uživatele, kterou azure AD B2C spustí. Najděte element DefaultUserJourney v rámci předávající strany. Aktualizujte ID reference tak, aby odpovídalo ID cesty uživatele, do kterého jste přidali zprostředkovatele identity.

V následujícím příkladu CustomSignUpSignIn je pro cestu uživatele nastavena hodnota ReferenceId na CustomSignUpSignIn:

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

Nahrání vlastních zásad

  1. Přihlaste se k portálu Azure.
  2. Na panelu nástrojů portálu vyberte ikonu Adresář a předplatné a pak vyberte adresář, který obsahuje vašeho tenanta Azure AD B2C.
  3. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.
  4. V části Zásady vyberte Architekturu prostředí identit.
  5. Vyberte Nahrát vlastní zásady a potom nahrajte dva soubory zásad, které jste změnili, v následujícím pořadí: zásady rozšíření, například TrustFrameworkExtensions.xml, pak zásady předávající strany, například SignUpSignIn.xml.
  1. Vyberte například zásadu B2C_1A_signup_signinpředávající strany.
  2. V části Aplikace vyberte webovou aplikaci, kterou jste předtím zaregistrovali. Adresa URL odpovědi by se měla zobrazit https://jwt.ms.
  3. Vyberte tlačítko Spustit hned.
  4. Na registrační nebo přihlašovací stránce vyberte Contoso , abyste se přihlásili pomocí účtu Google.

Pokud je proces přihlášení úspěšný, prohlížeč se přesměruje na https://jwt.msobsah tokenu vráceného službou Azure AD B2C.

Známé problémy

  • Azure AD B2C nepodporuje JWE (JSON Web Encryption) pro výměnu šifrovaných tokenů pomocí zprostředkovatelů identity OpenID Connect.

Další kroky

Další informace najdete v referenční příručce k technickému profilu OpenId Připojení.