Udostępnij za pośrednictwem


Konfigurowanie rejestracji i logowania przy użyciu ogólnego identyfikatora OpenID Połączenie przy użyciu usługi Azure Active Directory B2C

Przed rozpoczęciem użyj selektora Wybierz typ zasad, aby wybrać typ konfigurowanych zasad. Usługa Azure Active Directory B2C oferuje dwie metody definiowania sposobu interakcji użytkowników z aplikacjami: za pomocą wstępnie zdefiniowanych przepływów użytkowników lub w pełni konfigurowalnych zasad niestandardowych. Kroki wymagane w tym artykule są różne dla każdej metody.

OpenID Połączenie to protokół uwierzytelniania oparty na protokole OAuth 2.0, który może służyć do bezpiecznego logowania użytkownika. Większość dostawców tożsamości korzystających z tego protokołu jest obsługiwana w usłudze Azure AD B2C.

W tym artykule wyjaśniono, jak dodać niestandardowych dostawców tożsamości openID Połączenie do przepływów użytkowników.

Ważne

Punkty końcowe muszą być zgodne z wymaganiami dotyczącymi zabezpieczeń usługi Azure AD B2C. Starsze wersje protokołu TLS i szyfry są przestarzałe. Aby uzyskać więcej informacji, zobacz Wymagania dotyczące protokołu TLS i pakietu szyfrowania usługi Azure AD B2C.

Wymagania wstępne

Dodawanie dostawcy tożsamości

  1. Zaloguj się w witrynie Azure Portal jako administrator globalny dzierżawy usługi Azure AD B2C.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.
  4. Wybierz pozycję Dostawcy tożsamości, a następnie wybierz pozycję Nowy dostawca openID Połączenie.
  5. Wprowadź nazwę. Na przykład wprowadź wartość Contoso.

Zdefiniuj dostawcę tożsamości openId Połączenie, dodając go do elementu ClaimsProviders w pliku rozszerzenia zasad.

  1. Otwórz plik TrustFrameworkExtensions.xml.

  2. Znajdź element ClaimsProviders. Jeśli nie istnieje, dodaj go pod elementem głównym.

  3. Dodaj nowy element ClaimsProvider w następujący sposób:

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

Konfigurowanie dostawcy tożsamości

Każdy dostawca tożsamości OpenID Połączenie opisuje dokument metadanych zawierający większość informacji wymaganych do przeprowadzenia logowania. Dokument metadanych zawiera informacje, takie jak adresy URL do użycia i lokalizację publicznych kluczy podpisywania usługi. Dokument metadanych Połączenie OpenID jest zawsze znajdujący się w punkcie końcowym kończącym się ciągiem .well-known/openid-configuration. W przypadku dostawcy tożsamości openID Połączenie, który chcesz dodać, wprowadź jego adres URL metadanych.

W adresie URL metadanych wprowadź adres URL dokumentu metadanych Połączenie OpenID.

W metadanych profilu technicznego <Item Key="METADATA"> wprowadź adres URL dokumentu metadanych Połączenie OpenID.

Identyfikator klienta i wpis tajny

Aby umożliwić użytkownikom logowanie, dostawca tożsamości wymaga od deweloperów zarejestrowania aplikacji w swojej usłudze. Ta aplikacja ma identyfikator, który jest określany jako identyfikator klienta i klucz tajny klienta.

Wpis tajny klienta jest opcjonalny. Należy jednak podać klucz tajny klienta, jeśli typ odpowiedzi to code, który używa wpisu tajnego do wymiany kodu dla tokenu.

Aby dodać identyfikator klienta i klucz tajny klienta, skopiuj te wartości z dostawcy tożsamości i wprowadź je w odpowiednich polach.

W metadanych profilu technicznego <Item Key="client_id"> wprowadź identyfikator klienta.

Tworzenie klucza zasad

Jeśli klucz tajny klienta jest wymagany, zapisz wpis tajny klienta, który został wcześniej zarejestrowany w dzierżawie usługi Azure AD B2C.

  1. Zaloguj się w witrynie Azure Portal.

  2. Upewnij się, że używasz katalogu zawierającego dzierżawę usługi Azure AD B2C. Wybierz filtr Katalog i subskrypcja na pasku narzędzi portalu.

  3. W ustawieniach portalu | Strona Katalogi i subskrypcje , znajdź katalog usługi Azure AD B2C na liście Nazwa katalogu, a następnie wybierz pozycję Przełącz.

  4. Wybierz pozycję Wszystkie usługi w lewym górnym rogu witryny Azure Portal, a następnie wyszukaj i wybierz usługę Azure AD B2C.

  5. Na stronie Przegląd wybierz pozycję Identity Experience Framework.

  6. Wybierz pozycję Klucze zasad, a następnie wybierz pozycję Dodaj.

  7. W obszarze Opcje wybierz pozycję Manual.

  8. Wprowadź nazwę klucza zasad. Na przykład ContosoSecret. Prefiks B2C_1A_ jest dodawany automatycznie do nazwy klucza.

  9. W obszarze Wpis tajny wprowadź wcześniej zarejestrowany wpis tajny klienta.

  10. W obszarze Użycie klucza wybierz pozycję Signature.

  11. Kliknij pozycję Utwórz.

  12. W elemecie CryptographicKeys XML dodaj następujący element:

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

Scope

Zakres definiuje informacje i uprawnienia, które chcesz zebrać od dostawcy tożsamości, na przykład openid profile. Aby odebrać token identyfikatora od dostawcy tożsamości, openid należy określić zakres.

Bez tokenu identyfikatora użytkownicy nie mogą zalogować się do usługi Azure AD B2C przy użyciu niestandardowego dostawcy tożsamości. Inne zakresy można dołączać według spacji. Zapoznaj się z dokumentacją niestandardowego dostawcy tożsamości, aby zobaczyć, jakie inne zakresy mogą być dostępne.

W polu Zakres wprowadź zakresy od dostawcy tożsamości. Na przykład openid profile.

W metadanych profilu technicznego <Item Key="scope"> wprowadź zakresy dostawcy tożsamości. Na przykład openid profile.

Typ odpowiedzi

Typ odpowiedzi opisuje, jakiego rodzaju informacje są wysyłane z powrotem w początkowym wywołaniu do authorization_endpoint niestandardowego dostawcy tożsamości. Można użyć następujących typów odpowiedzi:

  • code: Zgodnie z przepływem kodu autoryzacji kod zostanie zwrócony z powrotem do usługi Azure AD B2C. Usługa Azure AD B2C przechodzi do wywołania token_endpoint metody w celu wymiany kodu tokenu.
  • id_token: token identyfikatora jest zwracany z powrotem do usługi Azure AD B2C z niestandardowego dostawcy tożsamości.

W polu Typ odpowiedzi wybierz pozycję codelub id_token, zgodnie z ustawieniami dostawcy tożsamości.

W metadanych profilu technicznego <Item Key="response_types"> wybierz pozycję codelub id_token zgodnie z ustawieniami dostawcy tożsamości.

Tryb odpowiedzi

Tryb odpowiedzi definiuje metodę, która powinna służyć do wysyłania danych z powrotem z niestandardowego dostawcy tożsamości do usługi Azure AD B2C. Można użyć następujących trybów odpowiedzi:

  • form_post: Ten tryb odpowiedzi jest zalecany w celu uzyskania najlepszych zabezpieczeń. Odpowiedź jest przesyłana za pośrednictwem metody HTTP POST z kodem lub tokenem zakodowanym w treści przy użyciu application/x-www-form-urlencoded formatu .
  • query: kod lub token jest zwracany jako parametr zapytania.

W trybie odpowiedzi wybierz pozycję form_postlub query, zgodnie z ustawieniami dostawcy tożsamości.

W metadanych profilu technicznego <Item Key="response_mode"> wybierz pozycję form_postlub query, zgodnie z ustawieniami dostawcy tożsamości.

Wskazówka dotycząca domeny

Wskazówkę dotyczącą domeny można użyć do przechodzenia bezpośrednio do strony logowania określonego dostawcy tożsamości zamiast wybierania przez użytkownika listy dostępnych dostawców tożsamości.

Aby zezwolić na takie zachowanie, wprowadź wartość dla wskazówki dotyczącej domeny. Aby przejść do niestandardowego dostawcy tożsamości, dołącz parametr domain_hint=<domain hint value> na końcu żądania podczas wywoływania usługi Azure AD B2C na potrzeby logowania.

W wskazówce domeny wprowadź nazwę domeny używaną w wskazówce domeny.

W elemencie XML profilu technicznego <Domain>contoso.com</Domain> wprowadź nazwę domeny używaną w wskazówce dotyczącej domeny. Na przykład contoso.com.

Mapowanie oświadczeń

Po wysłaniu tokenu identyfikatora przez niestandardowego dostawcę tożsamości do usługi Azure AD B2C usługa Azure AD B2C musi mieć możliwość mapowania oświadczeń z odebranego tokenu na oświadczenia rozpoznawane i używane przez usługę Azure AD B2C. Dla każdego z poniższych mapowań zapoznaj się z dokumentacją niestandardowego dostawcy tożsamości, aby zrozumieć oświadczenia zwracane z powrotem w tokenach dostawcy tożsamości:

  • Identyfikator użytkownika: wprowadź oświadczenie, które zawiera unikatowy identyfikator zalogowanych użytkowników.
  • Nazwa wyświetlana: wprowadź oświadczenie zawierające nazwę wyświetlaną lub pełną nazwę użytkownika.
  • Podana nazwa: wprowadź oświadczenie, które zawiera imię użytkownika.
  • Nazwisko: wprowadź oświadczenie, które podaje nazwisko użytkownika.
  • Adres e-mail: wprowadź oświadczenie zawierające adres e-mail użytkownika.

Element OutputClaims zawiera listę oświadczeń zwróconych przez dostawcę tożsamości. Zamapuj nazwę oświadczenia zdefiniowanego w zasadach na nazwę zdefiniowaną w dostawcy tożsamości. W obszarze <OutputClaims> elementu skonfiguruj PartnerClaimType atrybut z odpowiednią nazwą oświadczenia zdefiniowaną przez dostawcę tożsamości.

ClaimTypeReferenceId PartnerClaimType
issuerUserId Wprowadź oświadczenie, które zawiera unikatowy identyfikator zalogowanych użytkowników.
displayName Wprowadź oświadczenie zawierające nazwę wyświetlaną lub pełną nazwę użytkownika.
givenName Wprowadź oświadczenie, które zawiera imię użytkownika.
surName Wprowadź oświadczenie, które zawiera nazwisko użytkownika.
email Wprowadź oświadczenie zawierające adres e-mail użytkownika.
identityProvider Wprowadź oświadczenie, które zawiera nazwę wystawcy tokenu. Na przykład iss. Jeśli dostawca tożsamości nie zawiera oświadczenia wystawcy w tokenie, ustaw DefaultValue atrybut z unikatowym identyfikatorem dostawcy tożsamości. Na przykład DefaultValue="contoso.com".

Dodawanie dostawcy tożsamości do przepływu użytkownika

  1. W dzierżawie usługi Azure AD B2C wybierz pozycję Przepływy użytkownika.
  2. Kliknij przepływ użytkownika, który chcesz dodać dostawcę tożsamości.
  3. W obszarze Dostawcy tożsamości społecznościowych wybierz dodanego dostawcę tożsamości. Na przykład Contoso.
  4. Wybierz pozycję Zapisz.

Testowanie przepływu użytkownika

  1. Aby przetestować zasady, wybierz pozycję Uruchom przepływ użytkownika.
  2. W polu Aplikacja wybierz aplikację internetową o nazwie testapp1 , która została wcześniej zarejestrowana. Adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.
  3. Wybierz przycisk Uruchom przepływ użytkownika.
  4. Na stronie rejestracji lub logowania wybierz dostawcę tożsamości, który chcesz się zalogować. Na przykład Contoso.

Jeśli proces logowania zakończy się pomyślnie, przeglądarka zostanie przekierowana do https://jwt.msusługi , która wyświetla zawartość tokenu zwróconego przez usługę Azure AD B2C.

Dodawanie podróży użytkownika

W tym momencie dostawca tożsamości został skonfigurowany, ale nie jest jeszcze dostępny na żadnej ze stron logowania. Jeśli nie masz własnej podróży użytkownika niestandardowego, utwórz duplikat istniejącej podróży użytkownika szablonu, w przeciwnym razie przejdź do następnego kroku.

  1. Otwórz plik TrustFrameworkBase.xml z pakietu startowego.
  2. Znajdź i skopiuj całą zawartość elementu UserJourney , który zawiera Id="SignUpOrSignIn"element .
  3. Otwórz plik TrustFrameworkExtensions.xml i znajdź element UserJourneys . Jeśli element nie istnieje, dodaj go.
  4. Wklej całą zawartość elementu UserJourney skopiowaną jako element podrzędny elementu UserJourneys .
  5. Zmień nazwę identyfikatora podróży użytkownika. Na przykład Id="CustomSignUpSignIn".

Dodawanie dostawcy tożsamości do podróży użytkownika

Teraz, gdy masz podróż użytkownika, dodaj nowego dostawcę tożsamości do podróży użytkownika. Najpierw dodaj przycisk logowania, a następnie połącz przycisk z akcją. Akcja to utworzony wcześniej profil techniczny.

  1. Znajdź element kroku aranżacji, który zawiera Type="CombinedSignInAndSignUp"element , lub Type="ClaimsProviderSelection" w podróży użytkownika. Zazwyczaj jest to pierwszy krok aranżacji. Element ClaimsProviderSelections zawiera listę dostawców tożsamości, za pomocą których użytkownik może się zalogować. Kolejność elementów kontroluje kolejność przycisków logowania przedstawionych użytkownikowi. Dodaj element ClaimsProviderSelection XML. Ustaw wartość TargetClaimsExchangeId na przyjazną nazwę.

  2. W następnym kroku aranżacji dodaj element ClaimsExchange . Ustaw identyfikator na wartość identyfikatora wymiany oświadczeń docelowych. Zaktualizuj wartość TechnicalProfileReferenceId na identyfikator utworzonego wcześniej profilu technicznego.

Poniższy kod XML przedstawia dwa pierwsze kroki orkiestracji podróży użytkownika z dostawcą tożsamości:

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

Konfigurowanie zasad jednostki uzależnionej

Zasady jednostki uzależnionej, na przykład SignUpSignIn.xml, określają podróż użytkownika, który będzie wykonywany przez usługę Azure AD B2C. Znajdź element DefaultUserJourney w ramach jednostki uzależnionej. Zaktualizuj identyfikator ReferenceId , aby był zgodny z identyfikatorem podróży użytkownika, w którym dodano dostawcę tożsamości.

W poniższym przykładzie CustomSignUpSignIn dla podróży użytkownika identyfikator ReferenceId jest ustawiony na :CustomSignUpSignIn

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

Przekazywanie zasad niestandardowych

  1. Zaloguj się w witrynie Azure Portal.
  2. Wybierz ikonę Katalog i subskrypcja na pasku narzędzi portalu, a następnie wybierz katalog zawierający dzierżawę usługi Azure AD B2C.
  3. W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  4. W obszarze Zasady wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Przekaż zasady niestandardowe, a następnie przekaż dwa zmienione pliki zasad w następującej kolejności: zasady rozszerzenia, na przykład TrustFrameworkExtensions.xml, a następnie zasady jednostki uzależnionej, takie jak SignUpSignIn.xml.
  1. Wybierz zasady jednostki uzależnionej, na przykład B2C_1A_signup_signin.
  2. W polu Aplikacja wybierz wcześniej zarejestrowaną aplikację internetową. Adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.
  3. Wybierz przycisk Uruchom teraz.
  4. Na stronie rejestracji lub logowania wybierz pozycję Contoso , aby zalogować się przy użyciu konta Google.

Jeśli proces logowania zakończy się pomyślnie, przeglądarka zostanie przekierowana do https://jwt.msusługi , która wyświetla zawartość tokenu zwróconego przez usługę Azure AD B2C.

Znane problemy

  • Usługa Azure AD B2C nie obsługuje szyfrowania JWE (JSON Web Encryption) do wymiany zaszyfrowanych tokenów z dostawcami tożsamości openID connect.

Następne kroki

Aby uzyskać więcej informacji, zobacz Przewodnik dokumentacji technicznej dotyczący profilu technicznego Połączenie OpenId.