RelyingParty

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, informazioni sul pacchetto di avvio dei criteri personalizzati in Introduzione ai criteri personalizzati in Active Directory B2C.

L'elemento RelyingParty specifica il percorso utente da applicare per la richiesta corrente ad Azure Active Directory B2C (Azure AD B2C). Specifica inoltre l'elenco di attestazioni richiesto dall'applicazione relying party (RP) come parte del token emesso. Un'applicazione RP, ad esempio un'applicazione Web, mobile o desktop, chiama il file dei criteri RP. Il file di criteri RP esegue un'attività specifica, ad esempio l'accesso, la reimpostazione di una password o la modifica di un profilo. Più applicazioni possono usare gli stessi criteri RP e una singola applicazione può usare più criteri. Tutte le applicazioni RP ricevono lo stesso token con attestazioni e l'utente segue lo stesso percorso.

L'esempio seguente mostra un elemento RelyingParty nel file dei criteri B2C_1A_signup_signin:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy
  xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="https://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
  PolicySchemaVersion="0.3.0.0"
  TenantId="your-tenant.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://your-tenant.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>your-tenant.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>

  <RelyingParty>
    <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
    <UserJourneyBehaviors>
      <SingleSignOn Scope="Tenant" KeepAliveInDays="7"/>
      <SessionExpiryType>Rolling</SessionExpiryType>
      <SessionExpiryInSeconds>900</SessionExpiryInSeconds>
      <JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="your-application-insights-key" DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
      <ContentDefinitionParameters>
        <Parameter Name="campaignId">{OAUTH-KV:campaignId}</Parameter>
      </ContentDefinitionParameters>
    </UserJourneyBehaviors>
    <TechnicalProfile Id="PolicyProfile">
      <DisplayName>PolicyProfile</DisplayName>
      <Description>The policy profile</Description>
      <Protocol Name="OpenIdConnect" />
      <Metadata>collection of key/value pairs of data</Metadata>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName" />
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="email" />
        <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
        <OutputClaim ClaimTypeReferenceId="identityProvider" />
        <OutputClaim ClaimTypeReferenceId="loyaltyNumber" />
      </OutputClaims>
      <SubjectNamingInfo ClaimType="sub" />
    </TechnicalProfile>
  </RelyingParty>
  ...

L'elemento RelyingParty facoltativo contiene gli elementi seguenti:

Elemento Occorrenze Descrizione
DefaultUserJourney 1:1 Percorso utente predefinito per l'applicazione RP.
Endpoint 0:1 Elenco degli endpoint. Per altre informazioni, vedere Endpoint UserInfo.
UserJourneyBehaviors 0:1 Ambito dei comportamenti del percorso utente.
TechnicalProfile 1:1 Profilo tecnico supportato dall'applicazione RP. Il profilo tecnico fornisce un contratto per consentire all'applicazione RP di contattare Azure AD B2C.

È necessario creare gli elementi figlio RelyingParty nell'ordine presentato nella tabella precedente.

Endpoint

L'elemento Endpoints contiene l'elemento seguente:

Elemento Occorrenze Descrizione
Endpoint 1:1 Riferimento a un endpoint.

L'elemento Endpoint contiene gli attributi seguenti:

Attributo Obbligatoria Descrizione
ID Identificatore univoco dell'endpoint.
UserJourneyReferenceId Identificatore del percorso utente nei criteri. Per altre informazioni, consultare Percorsi utente

Nell'esempio seguente viene illustrata una relying party con l'endpoint UserInfo:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <Endpoints>
    <Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
  </Endpoints>
  ...

DefaultUserJourney

L'elemento DefaultUserJourney specifica un riferimento all'identificatore del percorso utente definito nei criteri Base o Extensions. Gli esempi seguenti mostrano il percorso utente di iscrizione o accesso specificato nell'elemento RelyingParty:

Criterio B2C_1A_signup_signin:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn">
  ...

B2C_1A_TrustFrameWorkBase o B2C_1A_TrustFrameworkExtensionPolicy:

<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
  ...

L'elemento DefaultUserJourney contiene l'attributo seguente:

Attributo Obbligatoria Descrizione
ReferenceId Identificatore del percorso utente nei criteri. Per altre informazioni, consultare Percorsi utente

UserJourneyBehaviors

L'elemento UserJourneyBehaviors contiene gli elementi seguenti:

Elemento Occorrenze Descrizione
SingleSignOn 0:1 Ambito del comportamento della sessione di Single Sign-On (SSO) di un percorso utente.
SessionExpiryType 0:1 Comportamento di autenticazione della sessione. I valori possibili sono: Rolling o Absolute. Il valore Rolling (predefinito) indica che l'utente rimane connesso, purché sia continuamente attivo nell'applicazione. Il valore Absolute indica che l'utente è obbligato a ripetere l'autenticazione una volta superato il periodo di tempo specificato dalla durata della sessione dell'applicazione.
SessionExpiryInSeconds 0:1 Durata del cookie di sessione di Azure AD B2C specificato come intero e archiviato nel browser dell'utente dopo l'autenticazione. Il valore predefinito è 86.400 secondi (24 ore). Il minimo è 900 secondi (15 minuti). Il massimo è 86.400 secondi (24 ore).
JourneyInsights 0:1 Chiave di strumentazione di Azure Application Insights da usare.
ContentDefinitionParameters 0:1 Elenco di coppie chiave-valore da accodare all'URI di caricamento della definizione del contenuto.
JourneyFraming 0:1 Consente di caricare l'interfaccia utente di questo criterio in un iframe.
ScriptExecution 0:1 Modalità di esecuzione JavaScript supportate. Valori possibili: Allow o Disallow (impostazione predefinita).

Quando si usano gli elementi precedenti, è necessario aggiungerli all'elemento UserJourneyBehaviors nell'ordine specificato nella tabella. Ad esempio, l'elemento JourneyInsights deve essere aggiunto prima (sopra) dell'elemento ScriptExecution .

SingleSignOn

L'elemento SingleSignOn contiene gli attributi seguenti:

Attributo Obbligatoria Descrizione
Scope Ambito del comportamento di Single Sign-On (SSO). I valori possibili sono: Suppressed, Tenant, Application o Policy. Il Suppressed valore indica che il comportamento viene eliminato e all'utente viene sempre richiesto di selezionare un provider di identità. Il valore Tenant indica che il comportamento viene applicato a tutti i criteri nel tenant. Ad esempio, a un utente che naviga in due percorsi di criteri per un tenant non viene richiesto di selezionare un provider di identità. Il valore Application indica che il comportamento viene applicato a tutti i criteri per l'applicazione che esegue la richiesta. Ad esempio, a un utente che naviga in due percorsi di criteri per un'applicazione non viene richiesto di selezionare un provider di identità. Il valore Policy indica che il comportamento si applica solo a un criterio. Ad esempio, a un utente che naviga in due percorsi di criteri per un framework attendibilità viene richiesto di selezionare un provider di identità in caso passaggio da un criterio a un altro.
KeepAliveInDays No Controlla per quanto tempo l'utente rimane connesso. Se si imposta il valore su 0, la funzionalità KMSI viene disattivata. Il valore predefinito è 0 (disabilitato). Il valore minimo è 1 giorno. Il valore massimo è 90 giorni. Per altre informazioni, vedere Mantenere l'accesso.
EnforceIdTokenHintOnLogout No Forzare il passaggio di un token ID rilasciato in precedenza all'endpoint di disconnessione come hint per la sessione autenticata corrente dell'utente finale con il client. I valori possibili sono: false (impostazione predefinita) o true. Per altre informazioni, vedere Accesso Web con OpenID Connect.

JourneyInsights

L'elemento JourneyInsights contiene gli attributi seguenti:

Attributo Obbligatoria Descrizione
TelemetryEngine Il valore deve essere ApplicationInsights.
InstrumentationKey Stringa che contiene la chiave di strumentazione per l'elemento Application Insights.
DeveloperMode I valori possibili sono: true o false. Se il valore è true, Application Insights velocizza la telemetria nella pipeline di elaborazione. Questa impostazione è valida per lo sviluppo, ma vincolata a volumi elevati. I log attività dettagliati sono progettati solo per facilitare lo sviluppo di criteri personalizzati. Non usare la modalità di sviluppo in fase di produzione. I log raccolgono tutte le attestazioni inviate verso e dai provider di identità durante lo sviluppo. Se usato nell'ambiente di produzione, lo sviluppatore assume la responsabilità dei dati personali raccolti nel log di App Insights di cui sono proprietari. Questi log dettagliati vengono raccolti solo quando il valore è impostato su true.
ClientEnabled I valori possibili sono: true o false. Se il valore è true, invia lo script di Application Insights lato client per tenere traccia della visualizzazione della pagina e degli errori del client.
ServerEnabled I valori possibili sono: true o false. Se il valore è true, invia l'elemento JSON UserJourneyRecorder esistente come evento personalizzato ad Application Insights.
TelemetryVersion Il valore deve essere 1.0.0.

Per altre informazioni, vedere Raccolta dei log

ContentDefinitionParameters

I criteri personalizzati di Azure AD B2C consentono di inviare un parametro in una stringa di query. Passando il parametro all'endpoint HTML, è possibile modificare dinamicamente il contenuto della pagina. È ad esempio possibile modificare l'immagine di sfondo della pagina di accesso o di iscrizione ad Azure AD B2C in base a un parametro passato dall'applicazione Web o per dispositivi mobili. Azure AD B2C passa i parametri delle stringhe di query al file HTML dinamico, ad esempio il file con estensione aspx.

L'esempio seguente passa un parametro denominato campaignId con un valore hawaii nella stringa di query:

https://login.microsoft.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?pB2C_1A_signup_signin&client_id=a415078a-0402-4ce3-a9c6-ec1947fcfb3f&nonce=defaultNonce&redirect_uri=http%3A%2F%2Fjwt.io%2F&scope=openid&response_type=id_token&prompt=login&campaignId=hawaii

L'elemento ContentDefinitionParameters contiene l'elemento seguente:

Elemento Occorrenze Descrizione
ContentDefinitionParameter 0:n Stringa che contiene la coppia chiave-valore accodata alla stringa di query di un URI di caricamento della definizione del contenuto.

L'elemento ContentDefinitionParameter contiene l'attributo seguente:

Attributo Obbligatoria Descrizione
Nome Nome della coppia chiave-valore.

Per altre informazioni, vedere Configurare l'interfaccia utente con contenuto dinamico usando criteri personalizzati

JourneyFraming

L'elemento JourneyFraming contiene gli attributi seguenti:

Attributo Obbligatoria Descrizione
Attivato Consente di caricare questo criterio all'interno di un iframe. I valori possibili sono: false (impostazione predefinita) o true.
Origini Contiene i domini che caricheranno l'iframe. Per altre informazioni, vedere Caricamento di Azure B2C in un iframe.

TechnicalProfile

L'elemento TechnicalProfile contiene l'attributo seguente:

Attributo Obbligatoria Descrizione
ID Il valore deve essere PolicyProfile.

L'elemento TechnicalProfile contiene gli elementi seguenti:

Elemento Occorrenze Descrizione
DisplayName 1:1 Stringa contenente il nome del profilo tecnico.
Descrizione 0:1 Stringa contenente la descrizione del profilo tecnico.
Protocollo 1:1 Protocollo usato per la federazione.
Metadati 0:1 Raccolta di Item delle coppie chiave-valore usate dal protocollo di comunicazione con l'endpoint durante una transazione per configurare l'interazione tra la relying party e altri membri della community.
InputClaims 1:1 Elenco di tipi di attestazione presi come input nel profilo tecnico. Ognuno di questi elementi contiene un riferimento a un ClaimType già definito nella sezione ClaimsSchema o in un criterio da cui eredita questo file di criteri.
OutputClaims 1:1 Elenco di tipi di attestazione eseguiti come output nel profilo tecnico. Ognuno di questi elementi contiene un riferimento a un ClaimType già definito nella sezione ClaimsSchema o in un criterio da cui eredita questo file di criteri.
SubjectNamingInfo 1:1 Nome del soggetto usato nei token.

L'elemento Protocol contiene l'attributo seguente:

Attributo Obbligatoria Descrizione
Nome Nome di un protocollo valido supportato da Azure AD B2C usato come parte del profilo tecnico. I valori possibili sono: OpenIdConnect o SAML2. Il valore OpenIdConnect rappresenta lo standard del protocollo OpenID Connect 1.0 in base alla specifica di OpenID Foundation. SAML2 rappresenta lo standard del protocollo SAML 2.0 in base alla specifica di OASIS.

Metadati

Quando il protocollo è SAML, un elemento di metadati contiene gli elementi seguenti. Per altre informazioni, vedere Opzioni per la registrazione di un'applicazione SAML in Azure AD B2C.

Attributo Obbligatoria Descrizione
IdpInitiatedProfileEnabled No Indica se il flusso avviato da IDP è supportato. Valori possibili: true o false (impostazione predefinita).
XmlSignatureAlgorithm No Il metodo usato da Azure AD B2C per firmare la risposta SAML. I valori possibili sono: Sha256, Sha384, Sha512 o Sha1. Verificare di configurare l'algoritmo di firma per entrambe le parti con lo stesso valore. Usare solo l'algoritmo supportato dal certificato. Per configurare l'asserzione SAML, vedere Metadati del profilo tecnico dell'autorità di certificazione SAML.
DataEncryptionMethod No Indica il metodo usato da Azure AD B2C per crittografare i dati usando l'algoritmo AES (Advanced Encryption Standard). I metadati controllano il valore dell'elemento <EncryptedData> nella risposta SAML. I valori possibili sono: Aes256 (impostazione predefinita), Aes192, Sha512 o Aes128.
KeyEncryptionMethod No Indica il metodo usato da Azure AD B2C per crittografare la copia della chiave usata per crittografare i dati. I metadati controllano il valore dell'elemento <EncryptedKey> nella risposta SAML. Valori possibili: Rsa15 (impostazione predefinita) - Algoritmo di crittografia a chiave pubblica RSA (PKCS) versione 1.5, RsaOaep - Algoritmo di crittografia OAEP (Optimal Asymmetric Encryption Padding) RSA.
UseDetachedKeys No Valori possibili: true o false (impostazione predefinita). Quando il valore è impostato su true, Azure AD B2C modifica il formato delle asserzioni crittografate. L'uso di chiavi scollegate aggiunge l'asserzione crittografata come figlio di EncrytedAssertion anziché EncryptedData.
WantsSignedResponses No Indica se Azure AD B2C firma la Response sezione della risposta SAML. Valori possibili: true (impostazione predefinita) o false.
RemoveMillisecondsFromDateTime No Indica se i millisecondi verranno rimossi dai valori datetime all'interno della risposta SAML (inclusi IssueInstant, NotBefore, NotOnOrAfter e AuthnInstant). Valori possibili: false (impostazione predefinita) o true.
RequestContextMaximumLengthInBytes No Indica la lunghezza massima del parametro dell'applicazioneRelayState SAML. Il valore predefinito è 1000. Il valore massimo è 2048.

InputClaims

L'elemento InputClaims contiene l'elemento seguente:

Elemento Occorrenze Descrizione
InputClaim 0:n Un tipo di attestazione di input previsto.

L'elemento InputClaim contiene gli attributi seguenti:

Attributo Obbligatoria Descrizione
ClaimTypeReferenceId Riferimento a un ClaimType già definito nella sezione ClaimsSchema nel file dei criteri.
DefaultValue No Valore predefinito che può essere usato se il valore dell'attestazione è vuoto.
PartnerClaimType No Invia l'attestazione in un nome diverso, come configurato nella definizione ClaimType.

OutputClaims

L'elemento OutputClaims contiene l'elemento seguente:

Elemento Occorrenze Descrizione
OutputClaim 0:n Nome di un tipo di attestazione previsto nell'elenco supportato per i criteri a cui la relying party esegue la sottoscrizione. Questa attestazione viene usata come output per il profilo tecnico.

L'elemento OutputClaim contiene gli attributi seguenti:

Attributo Obbligatoria Descrizione
ClaimTypeReferenceId Riferimento a un ClaimType già definito nella sezione ClaimsSchema nel file dei criteri.
DefaultValue No Valore predefinito che può essere usato se il valore dell'attestazione è vuoto.
PartnerClaimType No Invia l'attestazione in un nome diverso, come configurato nella definizione ClaimType.

SubjectNamingInfo

Con l'elemento SubjectNameingInfo viene controllato il valore del soggetto del token:

  • Token JWT : attestazione sub . Indica l'entità di sicurezza su cui il token rilascia informazioni, ad esempio l'utente di un'applicazione. Questo valore non è modificabile e non può essere riassegnato o riutilizzato. Può essere usato per eseguire controlli di autorizzazione sicuri, ad esempio quando il token viene usato per accedere a una risorsa. Per impostazione predefinita, l'attestazione dell'oggetto viene popolata con l'ID oggetto dell'utente nella directory. Per altre informazioni, vedere Configurazione di token, sessione e accesso Single Sign-On.
  • Token SAML : elemento che identifica l'elemento <Subject><NameID> soggetto. È possibile modificare il formato NameId.

L'elemento SubjectNamingInfo contiene l'attributo seguente:

Attributo Obbligatoria Descrizione
ClaimType Riferimento all'elemento PartnerClaimType di un'attestazione di output. Le attestazioni di output devono essere definite nell'insieme OutputClaims dei criteri di relying party con un partnerClaimType. Ad esempio, <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" /> o <OutputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInName" />.
Formato No Usato per le relying party SAML per impostare il formato NameId restituito nell'asserzione SAML.

Nell'esempio seguente viene illustrato come definire una relying party OpenID Connect. Le informazioni sul nome del soggetto sono configurate come objectId:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Il token JWT include l'attestazione sub con l'elemento objectId dell'utente:

{
  ...
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  ...
}

Nell'esempio seguente viene illustrato come definire una relying party SAML. Le informazioni sul nome dell'oggetto objectIdsono configurate come e il NameId format è stato fornito:

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="SAML2" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="displayName" />
      <OutputClaim ClaimTypeReferenceId="givenName" />
      <OutputClaim ClaimTypeReferenceId="surname" />
      <OutputClaim ClaimTypeReferenceId="email" />
      <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
      <OutputClaim ClaimTypeReferenceId="identityProvider" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
  </TechnicalProfile>
</RelyingParty>