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 code 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 . |
zakres | Nie. | Zakres żądania zdefiniowanego zgodnie ze specyfikacją OpenID Connect Core 1.0. Na przykład openid , profile i 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 true wartość , 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: true lub false (wartość domyślna). Jeśli chcesz użyć funkcji rozpoznawania oświadczeń w profilu technicznym, ustaw tę opcję na true wartość . |
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_jwt wartość . |
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: