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é primárně tak, aby řešily složité scénáře. U většiny scénářů doporučujeme používat předdefinované toky uživatelů. Pokud jste to ještě 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 v 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 identit nad OAuth 2.0 a představuje stav techniky v moderních protokolech ověřování. S technickým profilem OpenID Connect můžete federovat pomocí zprostředkovatele identity založeného na OpenID Connect, jako je Microsoft Entra ID. Federování pomocí zprostředkovatele identity umožňuje uživatelům přihlásit se pomocí stávajících sociálních nebo podnikových identit.

Protokol

Atribut Name elementu Protocol musí být nastaven na OpenIdConnecthodnotu . Například protokol pro technický profil MSA-OIDC je OpenIdConnect:

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

Vstupní deklarace identity

Elementy InputClaims a InputClaimsTransformations nejsou povinné. Možná ale budete chtít zprostředkovateli identity odeslat další parametry. 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.

OutputClaimsTransformations element může obsahovat kolekci OutputClaimsTransformation elementů, 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é vrací 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 je deklarace identity v tokenu vrácená zprostředkovatelem identity rovna deklarací identity zadané v metadatech IdTokenAudience.
METADATA Yes Adresa URL, která odkazuje na dokument konfigurace 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ý se nahradí názvem tenanta.
authorization_endpoint No Adresa URL, která odkazuje na koncový bod autorizace konfigurace zprostředkovatele identity OpenID Connect. Hodnota authorization_endpoint metadata má přednost před hodnotou zadanou authorization_endpoint v dobře známém koncovém bodu konfigurace OpenID. Adresa URL může obsahovat {tenant} výraz, který se nahradí názvem tenanta.
end_session_endpoint No Adresa URL koncového bodu relace. Hodnota end_session_endpoint metadat má přednost před hodnotou zadanou end_session_endpoint 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 hodnotou zadanou issuer v dobře známém koncovém bodu konfigurace OpenID. Pokud je tato hodnota zadána, Azure AD B2C zkontroluje, jestli iss se deklarace identity v tokenu vrácená zprostředkovatelem identity rovná deklarací identity 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 přístupový token a koncové body tokenu 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 Microsoft Entra ID.
UsePolicyInRedirectUri No Určuje, jestli se při vytváření identifikátoru URI pro přesměrování mají použít zásady. Když konfigurujete aplikaci 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 přidat identifikátor URI přesměrování pro každou zásadu, kterou používáte. Příklad: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx No Označuje, zda 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 true.
IncludeClaimResolvingInClaimsHandling No U vstupních a výstupních deklarací identity určuje, jestli je řešení deklarací identity zahrnuto v technickém profilu. Možné hodnoty: true, nebo 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 ověřovací hlavičku koncovému bodu tokenu. Možné hodnoty: client_secret_post (výchozí) a client_secret_basic, private_key_jwt. Další informace najdete v části Ověřování klienta OpenID Connect.
token_signing_algorithm No Určuje podpisový algoritmus, který se má použít, když token_endpoint_auth_method je nastavená na private_key_jwthodnotu . Možné hodnoty: RS256 (výchozí) nebo RS512.
SingleLogoutEnabled No Určuje, jestli se technický profil během přihlašování pokusí odhlásit od zprostředkovatelů federované identity. Další informace najdete v tématu Azure AD odhlášení z relace B2C. Možné hodnoty: true (výchozí) nebo false.
ReadBodyClaimsOnIdpRedirect No Pokud chcete číst deklarace identity z textu odpovědi při přesměrování zprostředkovatele identity, nastavte na true hodnotu . Tato metadata se používají s Apple ID, kde 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, která se zobrazí při selhání. Metadata by měla být nakonfigurovaná v technickém profilu OpenID Connect. Chybové zprávy lze lokalizovat.

Atribut Povinné Popis
UserMessageIfClaimsPrincipalDoesNotExist No Zpráva, která se zobrazí uživateli, pokud se v adresáři nenachází účet se zadaným uživatelským jménem.
UserMessageIfInvalidPassword No Zpráva, která se zobrazí uživateli v případě nesprávného hesla.
UserMessageIfOldPasswordUsed No Zpráva, která se zobrazí uživateli, pokud se použije 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íč je vyžadován pouze v případě, že je metadata response_types nastavena na code hodnotu a token_endpoint_auth_method nastavena na client_secret_post hodnotu nebo client_secret_basic. V tomto případě Azure AD B2C provede další volání pro výměnu autorizačního kódu za přístupový token. Pokud jsou metadata nastavená na id_token , můžete kryptografický klíč vynechat.
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 metadata token_endpoint_auth_method nastavena na private_key_jwthodnotu .

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

Při konfiguraci identifikátoru URI přesměrování vašeho 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 malými písmeny.

Příklady: