Udostępnij za pośrednictwem


Definiowanie profilu technicznego openID Connect w zasadach niestandardowych usługi Azure Active Directory B2C

Uwaga

W usłudze Azure Active Directory B2C zasady niestandardowe są przeznaczone głównie do rozwiązywania złożonych scenariuszy. W przypadku większości scenariuszy zalecamy używanie wbudowanych przepływów użytkownika. Jeśli nie zostało to zrobione, dowiedz się więcej o niestandardowym pakiecie startowym zasad w temacie Wprowadzenie do zasad niestandardowych w usłudze Active Directory B2C.

Usługa Azure Active Directory B2C (Azure AD B2C) zapewnia obsługę dostawcy tożsamości protokołu OpenID Connect . Program OpenID Connect 1.0 definiuje warstwę tożsamości na podstawie protokołu OAuth 2.0 i reprezentuje stan sztuki w nowoczesnych protokołach uwierzytelniania. Za pomocą profilu technicznego openID Connect można federować z dostawcą tożsamości opartym na protokole OpenID Connect, takim jak Microsoft Entra ID. Federacja z dostawcą tożsamości umożliwia użytkownikom logowanie się przy użyciu istniejących tożsamości społecznościowych lub przedsiębiorstwa.

Protokół

Atrybut Name elementu Protocol musi być ustawiony na OpenIdConnect. Na przykład protokół profilu technicznego MSA-OIDC to OpenIdConnect:

<TechnicalProfile Id="MSA-OIDC">
  <DisplayName>Microsoft Account</DisplayName>
  <Protocol Name="OpenIdConnect" />
  ...

Oświadczenia wejściowe

Elementy InputClaims i InputClaimsTransformations nie są wymagane. Możesz jednak wysłać dodatkowe parametry do dostawcy tożsamości. Poniższy przykład dodaje parametr ciągu zapytania domain_hint z wartością contoso.com do żądania autoryzacji.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

Oświadczenia wyjściowe

Element OutputClaims zawiera listę oświadczeń zwróconych przez dostawcę tożsamości OpenID Connect. Może być konieczne zamapować nazwę oświadczenia zdefiniowanego w zasadach na nazwę zdefiniowaną w dostawcy tożsamości. Można również uwzględnić oświadczenia, które nie są zwracane przez dostawcę tożsamości, o ile ustawisz DefaultValue atrybut.

Element OutputClaimsTransformations może zawierać kolekcję elementów OutputClaimsTransformation , które są używane do modyfikowania oświadczeń wyjściowych lub generowania nowych.

W poniższym przykładzie pokazano oświadczenia zwrócone przez dostawcę tożsamości konta Microsoft:

  • Oświadczenie podrzędne mapowane na oświadczenie issuerUserId.
  • Oświadczenie nazwy mapowane na oświadczenie displayName .
  • Wiadomość e-mail bez mapowania nazw.

Profil techniczny zwraca również oświadczenia, które nie są zwracane przez dostawcę tożsamości:

  • Oświadczenie identityProvider , które zawiera nazwę dostawcy tożsamości.
  • Oświadczenie authenticationSource z wartością domyślną socialIdpAuthentication.
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>

Metadane

Atrybut Wymagania opis
client_id Tak Identyfikator aplikacji dostawcy tożsamości.
IdTokenAudience Nie. Publiczność id_token. Jeśli zostanie określony, usługa Azure AD B2C sprawdza, czy aud oświadczenie w tokenie zwróconym przez dostawcę tożsamości jest równe jednemu określonemu w metadanych IdTokenAudience.
METADANE Tak Adres URL wskazujący dokument konfiguracji dostawcy tożsamości OpenID Connect, który jest również znany jako dobrze znany punkt końcowy konfiguracji OpenID. Adres URL może zawierać {tenant} wyrażenie, które jest zastępowane nazwą dzierżawy.
authorization_endpoint Nie. Adres URL wskazujący punkt końcowy autoryzacji konfiguracji dostawcy tożsamości OpenID Connect. Wartość authorization_endpoint metadanych ma pierwszeństwo authorization_endpoint przed określonym w dobrze znanym punkcie końcowym konfiguracji OpenID. Adres URL może zawierać {tenant} wyrażenie, które jest zastępowane nazwą dzierżawy.
end_session_endpoint Nie. Adres URL punktu końcowego sesji końcowej. Wartość end_session_endpoint metadanych ma pierwszeństwo przed end_session_endpoint określonym w dobrze znanym punkcie końcowym konfiguracji OpenID.
issuer Nie. Unikatowy identyfikator dostawcy tożsamości OpenID Connect. Wartość metadanych wystawcy ma pierwszeństwo przed issuer określonym w dobrze znanym punkcie końcowym konfiguracji OpenID. Jeśli zostanie określony, usługa Azure AD B2C sprawdza, czy iss oświadczenie w tokenie zwróconym przez dostawcę tożsamości jest równe jednemu określonemu w metadanych wystawcy.
ProviderName Nie. Nazwa dostawcy tożsamości.
response_types Nie. Typ odpowiedzi zgodnie ze specyfikacją OpenID Connect Core 1.0. Możliwe wartości: id_token, lub codetoken.
response_mode Nie. Metoda używana przez dostawcę tożsamości do wysyłania wyniku z powrotem do usługi Azure AD B2C. Możliwe wartości: query, form_post (wartość domyślna) lub fragment.
zakres Nie. Zakres żądania zdefiniowanego zgodnie ze specyfikacją OpenID Connect Core 1.0. Na przykład openid, profilei email.
HttpBinding Nie. Oczekiwane powiązanie HTTP z tokenem dostępu i punktami końcowymi tokenu oświadczeń. Możliwe wartości: GET lub POST.
ValidTokenIssuerPrefixes Nie. Klucz, który może służyć do logowania się do każdej dzierżawy podczas korzystania z dostawcy tożsamości z wieloma dzierżawami, takiego jak Microsoft Entra ID.
UsePolicyInRedirectUri Nie. Wskazuje, czy podczas konstruowania identyfikatora URI przekierowania należy użyć zasad. Podczas konfigurowania aplikacji u dostawcy tożsamości należy określić identyfikator URI przekierowania. Identyfikator URI przekierowania wskazuje usługę Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Jeśli określisz truewartość , musisz dodać identyfikator URI przekierowania dla każdej używanej zasady. Na przykład: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx Nie. Wskazuje, czy żądanie do usługi zewnętrznej powinno być oznaczone jako błąd, jeśli kod stanu Http znajduje się w zakresie 5xx. Wartość domyślna to false.
DiscoverMetadataByTokenIssuer Nie. Wskazuje, czy metadane OIDC powinny zostać odnalezione przy użyciu wystawcy w tokenie JWT. Jeśli musisz skompilować adres URL punktu końcowego metadanych na podstawie wystawcy, ustaw wartość true.
IncludeClaimResolvingInClaimsHandling Nie. W przypadku oświadczeń wejściowych i wyjściowych określa, czy rozwiązanie oświadczeń jest zawarte w profilu technicznym. Możliwe wartości: truelub false (wartość domyślna). Jeśli chcesz użyć funkcji rozpoznawania oświadczeń w profilu technicznym, ustaw tę opcję na truewartość .
token_endpoint_auth_method Nie. Określa, jak usługa Azure AD B2C wysyła nagłówek uwierzytelniania do punktu końcowego tokenu. Możliwe wartości: client_secret_post (wartość domyślna) i client_secret_basic, private_key_jwt. Aby uzyskać więcej informacji, zobacz sekcję OpenID Connect client authentication (Uwierzytelnianie klienta OpenID Connect).
token_signing_algorithm Nie. Określa algorytm podpisywania, który ma być używany, gdy token_endpoint_auth_method ustawiono wartość private_key_jwt. Możliwe wartości: RS256 (wartość domyślna) lub RS512.
SingleLogoutEnabled Nie. Wskazuje, czy podczas logowania profil techniczny próbuje wylogować się z federacyjnych dostawców tożsamości. Aby uzyskać więcej informacji, zobacz wylogowywanie sesji usługi Azure AD B2C. Możliwe wartości: true (wartość domyślna) lub false.
ReadBodyClaimsOnIdpRedirect Nie. Ustaw wartość na , aby true odczytywać oświadczenia z treści odpowiedzi na przekierowanie dostawcy tożsamości. Te metadane są używane z identyfikatorem Apple ID, gdzie oświadczenia zwracają ładunek odpowiedzi.
<Metadata>
  <Item Key="ProviderName">https://login.live.com</Item>
  <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
  <Item Key="response_types">code</Item>
  <Item Key="response_mode">form_post</Item>
  <Item Key="scope">openid profile email</Item>
  <Item Key="HttpBinding">POST</Item>
  <Item Key="UsePolicyInRedirectUri">false</Item>
  <Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>

Elementy interfejsu użytkownika

Następujące ustawienia mogą służyć do konfigurowania komunikatu o błędzie wyświetlanego po awarii. Metadane należy skonfigurować w profilu technicznym openID Connect. Komunikaty o błędach mogą być zlokalizowane.

Atrybut Wymagania opis
UserMessageIfClaimsPrincipalDoesNotExist Nie. Komunikat wyświetlany użytkownikowi, jeśli w katalogu nie można odnaleźć konta z podaną nazwą użytkownika.
UserMessageIfInvalidPassword Nie. Komunikat wyświetlany użytkownikowi, jeśli hasło jest niepoprawne.
UserMessageIfOldPasswordUsed Nie. Komunikat wyświetlany użytkownikowi, jeśli użyto starego hasła.

Klucze kryptograficzne

Element CryptographicKeys zawiera następujący atrybut:

Atrybut Wymagania opis
client_secret Tak Wpis tajny klienta aplikacji dostawcy tożsamości. Ten klucz kryptograficzny jest wymagany tylko wtedy, gdy dla metadanych response_types ustawiono code wartość i token_endpoint_auth_method ustawiono wartość client_secret_post lub client_secret_basic. W takim przypadku usługa Azure AD B2C wykonuje inne wywołanie w celu wymiany kodu autoryzacji dla tokenu dostępu. Jeśli metadane są ustawione, id_token możesz pominąć klucz kryptograficzny.
assertion_signing_key Tak Klucz prywatny RSA, który będzie używany do podpisywania potwierdzenia klienta. Ten klucz kryptograficzny jest wymagany tylko wtedy, gdy metadane token_endpoint_auth_method są ustawione na private_key_jwtwartość .

Adres URI przekierowania

Po skonfigurowaniu identyfikatora URI przekierowania dostawcy tożsamości wprowadź .https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp Pamiętaj, aby zastąpić {your-tenant-name} ciąg nazwą dzierżawy. Identyfikator URI przekierowania musi znajdować się we wszystkich małych literach.

Przykłady: