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 , code lub 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 , 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 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 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 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_jwt wartość . 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_jwt wartość . |
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: