Definiera en teknisk profil för OpenID Connect i en anpassad princip för Azure Active Directory B2C

Anteckning

I Azure Active Directory B2C är anpassade principer främst utformade för att hantera komplexa scenarier. I de flesta fall rekommenderar vi att du använder inbyggda användarflöden. Om du inte har gjort det kan du läsa mer om startpaketet för anpassade principer i Kom igång med anpassade principer i Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) har stöd för OpenID Connect-protokollidentitetsprovidern. OpenID Connect 1.0 definierar ett identitetslager ovanpå OAuth 2.0 och representerar den senaste tekniken i moderna autentiseringsprotokoll. Med en teknisk OpenID Connect-profil kan du federera med en OpenID Connect-baserad identitetsprovider, till exempel Azure AD. Federering med en identitetsprovider gör det möjligt för användare att logga in med sina befintliga sociala identiteter eller företagsidentiteter.

Protokoll

Attributet Name för protocol-elementet måste anges till .OpenIdConnect Protokollet för den tekniska profilen MSA-OIDC är OpenIdConnecttill exempel :

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

Inkommande anspråk

Elementen InputClaims och InputClaimsTransformations krävs inte. Men du kanske vill skicka ytterligare parametrar till din identitetsprovider. I följande exempel läggs frågesträngsparametern domain_hint till med värdet contoso.com för i auktoriseringsbegäran.

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

Utdataanspråk

Elementet OutputClaims innehåller en lista över anspråk som returneras av OpenID Connect-identitetsprovidern. Du kan behöva mappa namnet på anspråket som definierats i principen till det namn som definierats i identitetsprovidern. Du kan också inkludera anspråk som inte returneras av identitetsprovidern, så länge du anger attributet DefaultValue .

Elementet OutputClaimsTransformations kan innehålla en samling OutputClaimsTransformation-element som används för att ändra utdataanspråken eller generera nya.

I följande exempel visas de anspråk som returneras av Microsoft-kontoidentitetsprovidern:

  • Det underanspråk som är mappat till issuerUserId-anspråket .
  • Namnanspråket som är mappat till displayName-anspråket.
  • E-postmeddelandet utan namnmappning.

Den tekniska profilen returnerar också anspråk som inte returneras av identitetsprovidern:

  • IdentityProvider-anspråket som innehåller namnet på identitetsprovidern.
  • AuthenticationSource-anspråket med standardvärdet 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

Attribut Krävs Beskrivning
client_id Yes Programidentifieraren för identitetsprovidern.
IdTokenAudience No Åhörarna i id_token. Om det anges kontrollerar Azure AD B2C om anspråket aud i en token som returneras av identitetsprovidern är lika med det som anges i IdTokenAudience-metadata.
METADATA Yes En URL som pekar på ett konfigurationsdokument för OpenID Connect-identitetsprovidern, som även kallas openID välkänd konfigurationsslutpunkt. URL:en kan innehålla uttrycket {tenant} som ersätts med klientorganisationens namn.
authorization_endpoint No En URL som pekar på en slutpunkt för konfigurationsauktorisering för OpenID Connect-identitetsprovider. Värdet för authorization_endpoint metadata har företräde framför det authorization_endpoint som anges i den välkända OpenID-konfigurationsslutpunkten. URL:en kan innehålla uttrycket {tenant} som ersätts med klientorganisationens namn.
end_session_endpoint No URL:en för slutpunkten för sessionens slutpunkt. Värdet för end_session_endpoint metadata har företräde framför det end_session_endpoint som anges i den välkända konfigurationsslutpunkten OpenID.
utfärdare No Den unika identifieraren för en OpenID Connect-identitetsprovider. Värdet för utfärdarmetadata har företräde framför det issuer som anges i den välkända openID-konfigurationsslutpunkten. Om detta anges kontrollerar Azure AD B2C om anspråket iss i en token som returneras av identitetsprovidern är lika med det som anges i utfärdarens metadata.
ProviderName No Namnet på identitetsprovidern.
response_types No Svarstypen enligt OpenID Connect Core 1.0-specifikationen. Möjliga värden: id_token, codeeller token.
response_mode No Den metod som identitetsprovidern använder för att skicka tillbaka resultatet till Azure AD B2C. Möjliga värden: query, form_post (standard) eller fragment.
omfång No Omfånget för begäran som definieras enligt OpenID Connect Core 1.0-specifikationen. Till exempel openid, profileoch email.
HttpBinding No Den förväntade HTTP-bindningen till åtkomsttoken och slutpunkter för anspråkstoken. Möjliga värden: GET eller POST.
ValidTokenIssuerPrefixes No En nyckel som kan användas för att logga in på var och en av klienterna när du använder en identitetsprovider för flera klientorganisationer, till exempel Azure Active Directory.
UsePolicyInRedirectUri No Anger om du vill använda en princip när du skapar omdirigerings-URI:n. När du konfigurerar ditt program i identitetsprovidern måste du ange omdirigerings-URI:n. Omdirigerings-URI:n pekar på Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Om du anger truemåste du lägga till en omdirigerings-URI för varje princip som du använder. Exempel: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx No Anger om en begäran till en extern tjänst ska markeras som ett fel om HTTP-statuskoden ligger i 5xx-intervallet. Standardvärdet är false.
DiscoverMetadataByTokenIssuer No Anger om OIDC-metadata ska identifieras med hjälp av utfärdaren i JWT-token. Om du behöver skapa url:en för metadataslutpunkten baserat på Issuer anger du detta till true.
IncludeClaimResolvingInClaimsHandling No För indata- och utdataanspråk anger om anspråksmatchning ingår i den tekniska profilen. Möjliga värden: true, eller false (standard). Om du vill använda en anspråksmatchare i den tekniska profilen anger du detta till true.
token_endpoint_auth_method No Anger hur Azure AD B2C skickar autentiseringshuvudet till tokenslutpunkten. Möjliga värden: client_secret_post (standard) och client_secret_basic (offentlig förhandsversion) private_key_jwt (offentlig förhandsversion). Mer information finns i avsnittet Om OpenID Connect-klientautentisering.
token_signing_algorithm No Anger signeringsalgoritmen som ska användas när token_endpoint_auth_method är inställd på private_key_jwt. Möjliga värden: RS256 (standard) eller RS512.
SingleLogoutEnabled No Anger om den tekniska profilen försöker logga ut från federerade identitetsprovidrar under inloggningen. Mer information finns i logga ut Azure AD B2C-session. Möjliga värden: true (standard) eller false.
ReadBodyClaimsOnIdpRedirect No Ange till för true att läsa anspråk från svarstexten vid omdirigering av identitetsprovider. Dessa metadata används med Apple-ID, där anspråk returneras i svarsnyttolasten.
<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>

Element för användargränssnitt

Följande inställningar kan användas för att konfigurera felmeddelandet som visas vid fel. Metadata ska konfigureras i den tekniska openID Connect-profilen. Felmeddelandena kan lokaliseras.

Attribut Krävs Beskrivning
UserMessageIfClaimsPrincipalDoesNotExist No Meddelandet som ska visas för användaren om ett konto med det angivna användarnamnet inte hittades i katalogen.
UserMessageIfInvalidPassword No Meddelandet som ska visas för användaren om lösenordet är felaktigt.
UserMessageIfOldPasswordUsed No Meddelandet som ska visas för användaren om ett gammalt lösenord används.

Krypteringsnycklar

Elementet CryptographicKeys innehåller följande attribut:

Attribut Krävs Beskrivning
client_secret Yes Klienthemligheten för identitetsproviderprogrammet. Den här kryptografiska nyckeln krävs bara om response_types metadata har angetts till code och token_endpoint_auth_method har angetts till client_secret_post eller client_secret_basic. I det här fallet gör Azure AD B2C ytterligare ett anrop för att byta auktoriseringskoden mot en åtkomsttoken. Om metadata är inställda på id_token kan du utelämna den kryptografiska nyckeln.
assertion_signing_key Yes Den privata RSA-nyckeln som ska användas för att signera klientför försäkran. Den här kryptografiska nyckeln krävs bara om token_endpoint_auth_method metadata är inställt på private_key_jwt.

Omdirigerings-URI

När du konfigurerar omdirigerings-URI för din identitetsprovider anger du https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Ersätt {your-tenant-name} med klientorganisationens namn. Omdirigerings-URI:n måste vara i gemener.

Exempel: