Definire un profilo tecnico OpenID Connect in un criterio personalizzato di Azure Active Directory B2C

Nota

In Azure Active Directory B2C i criteri personalizzati sono stati progettati principalmente per far fronte a scenari complessi. Per la maggior parte degli scenari, è consigliabile usare i flussi utente predefiniti. In caso contrario, vedere Introduzione ai criteri personalizzati in Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) fornisce supporto per il provider di identità del protocollo OpenID Connect . OpenID Connect 1.0 definisce un livello di identità su OAuth 2.0 e rappresenta i più avanzati protocolli di autenticazione moderni. Con un profilo tecnico OpenID Connect, è possibile eseguire la federazione con un provider di identità basato su OpenID Connect, ad esempio Microsoft Entra ID. La federazione con un provider di identità consente agli utenti di accedere con le identità aziendali o di social networking esistenti.

Protocollo

L'attributo Nome dell'elemento Protocollo deve essere impostato su OpenIdConnect. Ad esempio, il protocollo per il profilo tecnico MSA-OIDC è OpenIdConnect:

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

Attestazioni di input

Gli elementi InputClaims e InputClaimsTransformations non sono obbligatori. Tuttavia, è possibile inviare parametri aggiuntivi al provider di identità. L'esempio seguente aggiunge il parametro della stringa di query domain_hint e il valore di contoso.com alla richiesta di autorizzazione.

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

Attestazioni di output

L'elemento OutputClaims contiene un elenco di attestazioni restituite dal provider di identità OpenID Connect. Può essere necessario eseguire il mapping del nome dell'attestazione definito nei criteri per il nome definito nel provider di identità. È anche possibile includere le attestazioni che non vengono restituite dal provider di identità, fino a quando è impostato l'attributo DefaultValue.

L'elemento OutputClaimsTransformations può contenere una raccolta di elementi OutputClaimsTransformation che vengono usati per modificare le attestazioni di output o per generarne di nuove.

L'esempio seguente illustra le attestazioni restituite dal provider di identità dell'account Microsoft:

  • Attestazione secondaria mappata all'attestazione issuerUserId .
  • L'attestazione nome di cui viene eseguito il mapping per l'attestazione displayName.
  • La posta elettronica senza il mapping del nome.

Il profilo tecnico restituisce anche le attestazioni che non vengono restituite dal provider di identità:

  • L'attestazione identityProvider che contiene il nome del provider di identità.
  • L'attestazione authenticationSource con un valore predefinito di 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>

Metadati

Attributo Obbligatoria Descrizione
client_id L'identificatore dell'attestazione del provider di identità.
IdTokenAudience No I destinatari dell'id_token. Se specificato, Azure AD B2C controlla se l'attestazione aud in un token restituito dal provider di identità è uguale a quella specificata nei metadati IdTokenAudience.
METADATI URL che punta a un documento di configurazione del provider di identità OpenID Connect, noto anche come endpoint di configurazione noto openID. L'URL può contenere l'espressione {tenant} , che viene sostituita con il nome del tenant.
authorization_endpoint No URL che punta a un endpoint di autorizzazione di configurazione del provider di identità OpenID Connect. Il valore di authorization_endpoint metadati ha la precedenza sull'endpoint authorization_endpoint di configurazione noto di OpenID specificato. L'URL può contenere l'espressione {tenant} , che viene sostituita con il nome del tenant.
end_session_endpoint No URL dell'endpoint della sessione finale. Il valore dei end_session_endpoint metadati ha la precedenza sull'oggetto end_session_endpoint specificato nell'endpoint di configurazione noto openID.
autorità di certificazione No Identificatore univoco di un provider di identità OpenID Connect. Il valore dei metadati dell'autorità di certificazione ha la precedenza sull'endpoint issuer di configurazione noto di OpenID specificato. Se specificato, Azure AD B2C controlla se l'attestazione iss in un token restituito dal provider di identità è uguale a quella specificata nei metadati dell'autorità di certificazione.
ProviderName No Il nome del provider di identità.
response_types No Il tipo di risposta in base alla specifica di OpenID Connect Core 1.0. I valori possibili sono: id_token, code o token.
response_mode No Il metodo che usa il provider di identità per restituire il risultato ad Azure AD B2C. I valori possibili sono: query, form_post (impostazione predefinita), o fragment.
ambito No Ambito della richiesta definita in base alla specifica OpenID Connect Core 1.0. Ad esempio openid, profile, e email.
HttpBinding No L'associazione HTTP prevista per il token di accesso e per gli endpoint del token delle attestazioni. I valori possibili sono: GET o POST.
ValidTokenIssuerPrefixes No Chiave che può essere usata per accedere a ognuno dei tenant quando si usa un provider di identità multi-tenant, ad esempio Microsoft Entra ID.
UsePolicyInRedirectUri No Indica se usare un criterio durante la costruzione dell'URI di reindirizzamento. Quando si configura l'applicazione nel provider di identità, è necessario specificare l'URI di reindirizzamento. L'URI di reindirizzamento punta ad Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Se si specifica true, è necessario aggiungere un URI di reindirizzamento per ogni criterio usato. Ad esempio: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xx No Indica se una richiesta a un servizio esterno deve essere contrassegnata come non riuscita se il codice di stato http è compreso nell'intervallo 5xx. Il valore predefinito è false.
DiscoverMetadataByTokenIssuer No Indica se i metadati OIDC devono essere individuati usando l'autorità emittente nel token JWT. Se è necessario compilare l'URL dell'endpoint dei metadati in base all'autorità emittente, impostare questo valore su true.
IncludeClaimResolvingInClaimsHandling No Per le attestazioni di input e output, specifica se la risoluzione delle attestazioni è inclusa nel profilo tecnico. Valori possibili: true o false (impostazione predefinita). Se si vuole usare un sistema di risoluzione delle attestazioni nel profilo tecnico, impostare questo valore su true.
token_endpoint_auth_method No Specifica il modo in cui Azure AD B2C invia l'intestazione di autenticazione all'endpoint del token. Valori possibili: client_secret_post (impostazione predefinita) e client_secret_basic, private_key_jwt. Per altre informazioni, vedere la sezione Autenticazione client OpenID Connect.
token_signing_algorithm No Specifica l'algoritmo di firma da usare quando token_endpoint_auth_method è impostato su private_key_jwt. Valori possibili: RS256 (impostazione predefinita) o RS512.
SingleLogoutEnabled No Indica se durante l'accesso il profilo tecnico tenta di disconnettersi dai provider di identità federati. Per altre informazioni, vedere Disconnessa sessione di Azure AD B2C. Valori possibili: true (impostazione predefinita) o false.
ReadBodyClaimsOnIdpRedirect No Impostare su per true leggere le attestazioni dal corpo della risposta nel reindirizzamento del provider di identità. Questi metadati vengono usati con l'ID Apple, dove le attestazioni restituiscono nel payload della risposta.
<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>

Elementi dell'interfaccia utente

Le impostazioni seguenti possono essere usate per configurare il messaggio di errore visualizzato in caso di errore. I metadati devono essere configurati nel profilo tecnico OpenID Connect. I messaggi di errore possono essere localizzati.

Attributo Obbligatoria Descrizione
UserMessageIfClaimsPrincipalDoesNotExist No Messaggio da visualizzare all'utente se un account con il nome utente specificato non viene trovato nella directory.
UserMessageIfInvalidPassword No Messaggio da visualizzare all'utente se la password non è corretta.
UserMessageIfOldPasswordUsed No Messaggio da visualizzare all'utente se viene usata una password precedente.

Chiavi di crittografia

L'elemento CryptographicKeys contiene l'attributo seguente:

Attributo Obbligatoria Descrizione
client_secret Il segreto client dell'applicazione del provider di identità. Questa chiave crittografica è necessaria solo se i metadati di response_types sono impostati su code e token_endpoint_auth_method è impostato su client_secret_post o client_secret_basic. In questo caso, Azure AD B2C effettua un'altra chiamata per scambiare il codice di autorizzazione per un token di accesso. Se i metadati sono impostati su id_token è possibile omettere la chiave di crittografia.
assertion_signing_key Chiave privata RSA che verrà usata per firmare l'asserzione client. Questa chiave crittografica è necessaria solo se i metadati di token_endpoint_auth_method sono impostati su private_key_jwt.

URI di reindirizzamento

Quando si configura l'URI di reindirizzamento del provider di identità, immettere https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. Assicurarsi di sostituire {your-tenant-name} con il nome del tenant. L'URI di reindirizzamento deve essere tutto minuscolo.

Esempi: