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, vedere 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 di 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 | Obbligatorio | Descrizione |
---|---|---|
Id | Sì | Identificatore univoco dell'endpoint. |
UserJourneyReferenceId | Sì | Identificatore del percorso utente nei criteri. Per altre informazioni, consultare Percorsi utente |
L'esempio seguente mostra 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 | Obbligatorio | Descrizione |
---|---|---|
ReferenceId | Sì | 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 valore 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 | Obbligatorio | Descrizione |
---|---|---|
Scope | Sì | 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 | Obbligatorio | Descrizione |
---|---|---|
TelemetryEngine | Sì | Il valore deve essere ApplicationInsights . |
InstrumentationKey | Sì | Stringa che contiene la chiave di strumentazione per l'elemento Application Insights. |
DeveloperMode | Sì | 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 | Sì | 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 | Sì | I valori possibili sono: true o false . Se il valore è true , invia l'elemento JSON UserJourneyRecorder esistente come evento personalizzato ad Application Insights. |
TelemetryVersion | Sì | 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=00001111-aaaa-2222-bbbb-3333cccc4444&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 | Obbligatorio | Descrizione |
---|---|---|
Name | Sì | 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 | Obbligatorio | Descrizione |
---|---|---|
Attivata | Sì | Consente di caricare questo criterio all'interno di un iframe. I valori possibili sono: false (impostazione predefinita) o true . |
Origini | Sì | 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 | Obbligatorio | Descrizione |
---|---|---|
Id | Sì | 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 UFX | 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 | Obbligatorio | Descrizione |
---|---|---|
Name | Sì | 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 UFX
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 | Obbligatorio | Descrizione |
---|---|---|
IdpInitiatedProfileEnabled | No | Indica se il flusso avviato da IDP è supportato. Valori possibili: true o false (impostazione predefinita). |
XmlSignatureAlgorithm | No | 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 delle applicazioni RelayState 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 | Obbligatorio | Descrizione |
---|---|---|
ClaimTypeReferenceId | Sì | 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 | Obbligatorio | Descrizione |
---|---|---|
ClaimTypeReferenceId | Sì | 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 SubjectNamingInfo è possibile controllare il valore dell'oggetto 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
<Subject><NameID>
che identifica l'elemento soggetto. È possibile modificare il formato NameId.
L'elemento SubjectNamingInfo contiene l'attributo seguente:
Attributo | Obbligatorio | Descrizione |
---|---|---|
ClaimType | Sì | Riferimento all'elemento PartnerClaimType di un'attestazione di output. Le attestazioni di output devono essere definite nella raccolta OutputClaims dei criteri della relying party con 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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
...
}
Nell'esempio seguente viene illustrato come definire una relying party SAML. Le informazioni sul nome soggetto sono configurate come objectId
e 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>