Definování technického profilu OpenID Connect ve vlastních zásadách Azure Active Directory B2C

Poznámka

V Azure Active Directory B2C jsou vlastní zásady navržené především pro řešení složitých scénářů. Ve většině scénářů doporučujeme používat integrované toky uživatelů. Pokud jste to neudělali, přečtěte si o úvodním balíčku vlastních zásad v tématu Začínáme s vlastními zásadami ve službě Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) poskytuje podporu pro zprostředkovatele identity protokolu OpenID Connect. OpenID Connect 1.0 definuje vrstvu identity nad OAuth 2.0 a představuje stav umění v moderních ověřovacích protokolech. Pomocí technického profilu OpenID Connect můžete federovat pomocí zprostředkovatele identity založeného na OpenID Connect, jako je například Azure AD. Federování pomocí zprostředkovatele identity umožňuje uživatelům přihlásit se svými stávajícími sociálními nebo podnikovými identitami.

Protokol

Atribut Name elementu Protocol musí být nastaven na OpenIdConnect. Například protokol technického profilu MSA-OIDC je OpenIdConnect:

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

Vstupní deklarace identity

Elementy InputClaims a InputClaimsTransformations nejsou povinné. Můžete ale chtít odeslat další parametry zprostředkovateli identity. Následující příklad přidá parametr řetězce dotazu domain_hint s hodnotou contoso.com do žádosti o autorizaci.

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

Výstupní deklarace identity

Element OutputClaims obsahuje seznam deklarací identity vrácených zprostředkovatelem identity OpenID Connect. Možná budete muset namapovat název deklarace identity definované ve vaší zásadě na název definovaný ve zprostředkovateli identity. Můžete také zahrnout deklarace identity, které nevrací zprostředkovatel identity, pokud nastavíte DefaultValue atribut.

Element OutputClaimsTransformations může obsahovat kolekci elementů OutputClaimsTransformation, které se používají k úpravě výstupních deklarací identity nebo generování nových.

Následující příklad ukazuje deklarace identity vrácené zprostředkovatelem identity účtu Microsoft:

  • Dílčí deklarace identity, která je namapovaná na deklaraci identity issuerUserId.
  • Deklarace názvu , která je namapovaná na deklaraci identity displayName .
  • E-mail bez mapování jmen.

Technický profil také vrátí deklarace identity, které nevrací zprostředkovatel identity:

  • Deklarace identityProvider , která obsahuje název zprostředkovatele identity.
  • Deklarace identity authenticationSource s výchozí hodnotou 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>

Metadata

Atribut Povinné Popis
client_id Yes Identifikátor aplikace zprostředkovatele identity.
IdTokenAudience No Cílová skupina id_token. Pokud je zadáno, Azure AD B2C zkontroluje, jestli aud se deklarace identity vrácená zprostředkovatelem identity rovná té zadané v metadatech IdTokenAudience.
METADATA Yes Adresa URL, která odkazuje na konfigurační dokument zprostředkovatele identity OpenID Connect, který se označuje také jako známý koncový bod konfigurace OpenID. Adresa URL může obsahovat {tenant} výraz, který je nahrazen názvem tenanta.
authorization_endpoint No Adresa URL, která odkazuje na koncový bod autorizace zprostředkovatele identity OpenID Connect. Hodnota metadat authorization_endpoint má přednost před authorization_endpoint hodnotou zadanou v dobře známém koncovém bodu konfigurace OpenID. Adresa URL může obsahovat {tenant} výraz, který je nahrazen názvem tenanta.
end_session_endpoint No Adresa URL koncového bodu relace Hodnota end_session_endpoint metadat má přednost před end_session_endpoint hodnotou zadanou v dobře známém koncovém bodu konfigurace OpenID.
issuer No Jedinečný identifikátor zprostředkovatele identity OpenID Connect Hodnota metadat vystavitele má přednost před issuer hodnotou zadanou v dobře známém koncovém bodu konfigurace OpenID. Pokud je zadáno, Azure AD B2C zkontroluje, jestli iss se deklarace identity v tokenu vráceného zprostředkovatelem identity rovná té zadané v metadatech vystavitele.
ProviderName No Název zprostředkovatele identity.
response_types No Typ odpovědi podle specifikace OpenID Connect Core 1.0. Možné hodnoty: id_token, codenebo token.
response_mode No Metoda, kterou zprostředkovatel identity používá k odeslání výsledku zpět do Azure AD B2C. Možné hodnoty: query, form_post (výchozí) nebo fragment.
scope No Rozsah požadavku, který je definován podle specifikace OpenID Connect Core 1.0. openidNapříklad , profilea email.
HttpBinding No Očekávaná vazba HTTP na koncové body přístupového tokenu a tokenů deklarací identity Možné hodnoty: GET nebo POST.
ValidTokenIssuerPrefixes No Klíč, který se dá použít k přihlášení ke každému tenantovi při použití zprostředkovatele identity s více tenanty, jako je Azure Active Directory.
UsePolicyInRedirectUri No Určuje, jestli se má při vytváření identifikátoru URI přesměrování použít zásada. Při konfiguraci aplikace ve zprostředkovateli identity musíte zadat identifikátor URI přesměrování. Identifikátor URI přesměrování odkazuje na Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Pokud zadáte true, musíte pro každou zásadu, kterou používáte, přidat identifikátor URI přesměrování. Příklad: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx No Určuje, jestli má být požadavek na externí službu označený jako selhání, pokud je stavový kód HTTP v rozsahu 5xx. Výchozí formát je false.
DiscoverMetadataByTokenIssuer No Určuje, jestli se mají metadata OIDC zjistit pomocí vystavitele v tokenu JWT. Pokud potřebujete vytvořit adresu URL koncového bodu metadat na základě vystavitele, nastavte ji na truehodnotu .
IncludeClaimResolvingInClaimsHandling No U vstupních a výstupních deklarací identity určuje, jestli je řešení deklarací identity součástí technického profilu. Možné hodnoty: truenebo false (výchozí). Pokud chcete použít překladač deklarací identity v technickém profilu, nastavte ho na true.
token_endpoint_auth_method No Určuje, jak Azure AD B2C odešle hlavičku ověřování do koncového bodu tokenu. Možné hodnoty: client_secret_post (výchozí) a client_secret_basic (Public Preview), private_key_jwt (Public Preview). Další informace najdete v části Ověřování klienta OpenID Connect.
token_signing_algorithm No Určuje podpisový algoritmus, který se má použít, pokud token_endpoint_auth_method je nastaven na private_key_jwt. Možné hodnoty: RS256 (výchozí) nebo RS512.
SingleLogoutEnabled No Označuje, jestli se během přihlášení technický profil pokusí odhlásit od zprostředkovatelů federovaných identit. Další informace najdete v tématu Azure AD odhlášení relace B2C. Možné hodnoty: true (výchozí) nebo false.
ReadBodyClaimsOnIdpRedirect No Nastavte na true čtení deklarací identity z textu odpovědi na přesměrování zprostředkovatele identity. Tato metadata se používají s Apple ID, kde se deklarace identity vrací v datové části odpovědi.
<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>

Prvky uživatelského rozhraní

Následující nastavení lze použít ke konfiguraci chybové zprávy zobrazené při selhání. Metadata by měla být nakonfigurována v technickém profilu OpenID Connect. Chybové zprávy lze lokalizovat.

Atribut Povinné Popis
UserMessageIfClaimsPrincipalDoesNotExist No Zpráva, která se uživateli zobrazí, pokud účet s zadaným uživatelským jménem nebyl v adresáři nalezen.
UserMessageIfInvalidPassword No Zpráva, která se uživateli zobrazí, pokud je heslo nesprávné.
UserMessageIfOldPasswordUsed No Zpráva, která se uživateli zobrazí, pokud se používá staré heslo.

Kryptografické klíče

Element CryptographicKeys obsahuje následující atribut:

Atribut Povinné Popis
client_secret Yes Tajný klíč klienta aplikace zprostředkovatele identity. Tento kryptografický klíč se vyžaduje pouze v případě, že je nastavenacode response_types metadata a token_endpoint_auth_method je nastavena na client_secret_post nebo client_secret_basic. V tomto případě Azure AD B2C provede další volání výměny autorizačního kódu pro přístupový token. Pokud je metadata nastavená na id_token hodnotu, můžete vynechat kryptografický klíč.
assertion_signing_key Yes Privátní klíč RSA, který se použije k podepsání kontrolního výrazu klienta. Tento kryptografický klíč je vyžadován pouze v případě, že je nastavena token_endpoint_auth_method metadata private_key_jwt.

Identifikátor URI pro přesměrování

Při konfiguraci identifikátoru URI přesměrování zprostředkovatele identity zadejte https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Nezapomeňte nahradit {your-tenant-name} názvem vašeho tenanta. Identifikátor URI přesměrování musí být ve všech malých písmenech.

Příklady: