Definiowanie profilu technicznego programu 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życie wbudowanych przepływów użytkownika. Jeśli to nie zrobiono, zapoznaj się z niestandardowym pakietem 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 sfederować z dostawcą tożsamości opartym na protokole OpenID Connect, takim jak identyfikator Microsoft Entra. Federowanie za pomocą dostawcy 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 żą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. Być może trzeba będzie zamapować nazwę oświadczenia zdefiniowanego w zasadach na nazwę zdefiniowaną w dostawcy tożsamości. Możesz również uwzględnić oświadczenia, które nie są zwracane przez dostawcę DefaultValue tożsamości, o ile ustawisz 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 przedstawiono 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 zawierające 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 Wymagane Opis
client_id Tak Identyfikator aplikacji dostawcy tożsamości.
IdTokenAudience Nie Odbiorcy id_token. Jeśli zostanie określony, 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.
METADANYCH 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 dostawcy tożsamości OpenID Connect. Wartość metadanych authorization_endpoint 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ść metadanych end_session_endpoint ma pierwszeństwo end_session_endpoint przed 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 issuer przed określonym w dobrze znanym punkcie końcowym konfiguracji OpenID. Jeśli zostanie określony, 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, codelub token.
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.
scope 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 identyfikator Microsoft Entra.
UsePolicyInRedirectUri Nie Wskazuje, czy należy używać zasad podczas konstruowania identyfikatora URI przekierowania. Podczas konfigurowania aplikacji u dostawcy tożsamości należy określić identyfikator URI przekierowania. Identyfikator URI przekierowania wskazuje 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 rozpoznawanie oświadczeń jest uwzględnione w profilu technicznym. Możliwe wartości: true, lub false (wartość domyślna). Jeśli chcesz użyć narzędzia rozpoznawania oświadczeń w profilu technicznym, ustaw wartość true.
token_endpoint_auth_method Nie Określa, jak 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 jest ustawiony na private_key_jwtwartość . 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 Azure AD wylogowywanie sesji 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 w przekierowaniu 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 niepowodzeniu. Metadane należy skonfigurować w profilu technicznym openID Connect. Komunikaty o błędach można lokalizować.

Atrybut Wymagane Opis
UserMessageIfClaimsPrincipalDoesNotExist Nie Komunikat wyświetlany użytkownikowi, jeśli konto z podaną nazwą użytkownika nie zostanie znalezione w katalogu.
UserMessageIfInvalidPassword Nie Komunikat wyświetlany użytkownikowi, jeśli hasło jest niepoprawne.
UserMessageIfOldPasswordUsed Nie Komunikat do wyświetlenia użytkownikowi, jeśli użyto starego hasła.

Klucze kryptograficzne

Element CryptographicKeys zawiera następujący atrybut:

Atrybut Wymagane Opis
client_secret Tak Klucz tajny klienta aplikacji dostawcy tożsamości. Ten klucz kryptograficzny jest wymagany tylko wtedy, gdy ustawionocode response_types metadanych i token_endpoint_auth_method ustawiono wartość client_secret_post lub client_secret_basic. W tym przypadku 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 asercji klienta. Ten klucz kryptograficzny jest wymagany tylko wtedy, gdy token_endpoint_auth_method metadanych jest ustawiona na private_key_jwtwartość .

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