Trasformazioni delle attestazioni di data
Questo articolo fornisce esempi per l'uso delle trasformazioni delle attestazioni di data dello schema Identity Experience Framework in Azure Active Directory B2C (Azure AD B2C). Per altre informazioni, vedere Trasformazioni delle attestazioni.
AssertDateTimeIsGreaterThan
Afferma che una data è successiva a una seconda data. Determina se l'oggetto rightOperand
leftOperand
è maggiore di . In caso affermativo, genera un'eccezione. Vedere la demo live di questa trasformazione delle attestazioni.
Elemento | TransformationClaimType | Tipo di dati | Note |
---|---|---|---|
InputClaim | leftOperand | string | Tipo della prima attestazione, che deve essere successiva alla seconda attestazione. |
InputClaim | rightOperand | string | Tipo della seconda attestazione, che deve essere precedente alla prima attestazione. |
InputParameter | AssertIfEqualTo | boolean | Specifica se questa asserzione deve generare un errore se l'operando sinistro è uguale all'operando destro. I valori possibili sono: true (impostazione predefinita) o false . |
InputParameter | AssertIfRightOperandIsNotPresent | boolean | Specifica se questa asserzione debba passare se l'operando destro è assente. |
InputParameter | TreatAsEqualIfWithinMillseconds | INT | Specifica il numero di millisecondi che devono trascorrere tra le due date e ore affinché le ore vengano considerate uguali (ad esempio, per tenere conto di un eventuale sfasamento di orario). |
La trasformazione dell'asserzione AssertDateTimeIsGreaterThan viene sempre eseguita da un profilo tecnico di convalida che viene chiamato da un profilo tecnico autocertificato. I metadati del profilo tecnico autocertificato DateTimeGreaterThan controllano il messaggio di errore che il profilo tecnico presenta all'utente. I messaggi di errore possono essere localizzati.
Esempio di AssertDateTimeIsGreaterThan
Nell'esempio seguente viene confrontata l'attestazione currentDateTime
con l'attestazione approvedDateTime
. Se currentDateTime
è successivo ad approvedDateTime
, viene generato un errore. La trasformazione considera uguali i valori se rientrano in una differenza di 5 minuti (30000 millisecondi). Non genererà un errore se i valori sono uguali perché AssertIfEqualTo
è impostato su false
.
<ClaimsTransformation Id="AssertApprovedDateTimeLaterThanCurrentDateTime" TransformationMethod="AssertDateTimeIsGreaterThan">
<InputClaims>
<InputClaim ClaimTypeReferenceId="approvedDateTime" TransformationClaimType="leftOperand" />
<InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="rightOperand" />
</InputClaims>
<InputParameters>
<InputParameter Id="AssertIfEqualTo" DataType="boolean" Value="false" />
<InputParameter Id="AssertIfRightOperandIsNotPresent" DataType="boolean" Value="true" />
<InputParameter Id="TreatAsEqualIfWithinMillseconds" DataType="int" Value="300000" />
</InputParameters>
</ClaimsTransformation>
Nota
Nell'esempio precedente, se si rimuove il AssertIfEqualTo
parametro di input e l'oggetto currentDateTime
è uguale aapprovedDateTime
, verrà generato un errore. Il AssertIfEqualTo
valore predefinito è true
.
- Attestazioni di input:
- leftOperand: 2022-01-01T15:00:00
- rightOperand: 2022-01-22T15:00:00
- Parametri di input:
- AssertIfEqualTo: false
- AssertIfRightOperandIsNotPresent: true
- TreatAsEqualIfWithinMillseconds: 300000 (30 secondi)
- Risultato: errore generato
Chiamare la trasformazione attestazioni
Il profilo tecnico di convalida seguente Example-AssertDates
chiama la AssertApprovedDateTimeLaterThanCurrentDateTime
trasformazione attestazioni.
<TechnicalProfile Id="Example-AssertDates">
<DisplayName>Unit test</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="ComparisonResult" DefaultValue="false" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertDates" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
Il profilo tecnico self-asserted chiama il profilo tecnico di convalida Example-AssertDates
.
<TechnicalProfile Id="SelfAsserted-AssertDateTimeIsGreaterThan">
<DisplayName>User ID signup</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
<Item Key="DateTimeGreaterThan">Custom error message if the provided right operand is greater than the right operand.</Item>
</Metadata>
...
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="ClaimsTransformation-AssertDateTimeIsGreaterThan" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
ConvertDateToDateClaim
Converte un DateTime
tipo di attestazione in un Date
tipo di attestazione. La trasformazione attestazioni rimuove il formato dell'ora dalla data. Vedere la demo live di questa trasformazione delle attestazioni.
Elemento | TransformationClaimType | Tipo di dati | Note |
---|---|---|---|
InputClaim | inputClaim | dateTime | Tipo di attestazione da convertire. |
OutputClaim | outputClaim | data | Tipo di attestazione generato dopo che questa trasformazione attestazioni è stata richiamata. |
Esempio di ConvertDateTimeToDateClaim
Nell'esempio seguente viene illustrata la conversione dell'attestazione systemDateTime
(tipo di dati dateTime) in un'altra attestazione systemDate
(tipo di dati date).
<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Attestazioni di input:
- inputClaim: 2022-01-03T11:34:22.0000000Z
- Attestazioni di output:
- outputClaim: 2022-01-03
ConvertDateToDateTimeClaim
Converte un Date
tipo di attestazione in un DateTime
tipo di attestazione. La trasformazione delle attestazioni converte il formato dell'ora e aggiunge 12:00:00 AM alla data. Vedere la demo live di questa trasformazione delle attestazioni.
Elemento | TransformationClaimType | Tipo di dati | Note |
---|---|---|---|
InputClaim | inputClaim | data | Tipo di attestazione da convertire. |
OutputClaim | outputClaim | dateTime | Tipo di attestazione generato dopo che questa trasformazione attestazioni è stata richiamata. |
Esempio di ConvertDateToDateTimeClaim
L'esempio seguente illustra la conversione dell'attestazione dateOfBirth
(tipo di dati date) in un'altra attestazione dateOfBirthWithTime
(tipo di dati dateTime).
<ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Attestazioni di input:
- inputClaim: 2022-01-03
- Attestazioni di output:
- outputClaim: 2022-01-03T00:00:00.0000000Z
DateTimeComparison
Confronta due date e determina se la prima data è successiva, precedente o uguale a un'altra. Il risultato è una nuova attestazione booleana con un valore di true
o false
. Vedere la demo live di questa trasformazione delle attestazioni.
Elemento | TransformationClaimType | Tipo di dati | Note |
---|---|---|---|
InputClaim | firstDateTime | dateTime | La prima data da confrontare se è successiva, precedente o uguale alla seconda data. I valori Null generano un'eccezione. |
InputClaim | secondDateTime | dateTime | Seconda data da confrontare. Il valore Null viene considerato come data e ora correnti. |
InputParameter | timeSpanInSeconds | INT | Timepan da aggiungere alla prima data. Valori possibili: vanno da -2.147.483.648 a positivi 2.147.483.647. |
InputParameter | operator | string | Uno dei valori seguenti: same , later than o earlier than . |
OutputClaim | result | boolean | Attestazione generata dopo che questa trasformazione attestazioni è stata richiamata. |
Esempio di DateTimeComparison
Utilizzare questa trasformazione attestazioni per determinare se la prima data e il timeSpanInSeconds
parametro è successivo, precedente o uguale a un altro. L'esempio seguente mostra che la prima data (2022-01-01T00:00:00) più 90 giorni è successiva alla seconda data (2022-03-16T00:00:00).
<ClaimsTransformation Id="CompareLastTOSAcceptedWithCurrentDateTime" TransformationMethod="DateTimeComparison">
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_LastTOSAccepted" TransformationClaimType="secondDateTime" />
<InputClaim ClaimTypeReferenceId="currentDateTime" TransformationClaimType="firstDateTime" />
</InputClaims>
<InputParameters>
<InputParameter Id="operator" DataType="string" Value="later than" />
<InputParameter Id="timeSpanInSeconds" DataType="int" Value="7776000" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isLastTOSAcceptedGreaterThanNow" TransformationClaimType="result" />
</OutputClaims>
</ClaimsTransformation>
- Attestazioni di input:
- firstDateTime: 2022-01-01T00:00:00.10000Z
- secondDateTime: 2022-03-16T00:00:00.10000Z
- Parametri di input:
- operatore: later than
- timeSpanInSeconds: 7776000 (90 giorni)
- Attestazioni di output:
- risultato: true
IsTermsOfUseConsentRequired
Determinare se un dateTime
tipo di attestazione è precedente o maggiore di una data specifica. Il risultato è una nuova attestazione booleana con un valore di true
o false
. Vedere la demo live di questa trasformazione delle attestazioni.
Elemento | TransformationClaimType | Tipo di dati | Note |
---|---|---|---|
InputClaim | termsOfUseConsentDateTime | dateTime | Tipo dateTime di attestazione per verificare se è precedente o successivo al termsOfUseTextUpdateDateTime parametro di input. Il valore non definito restituisce true il risultato. |
InputParameter | termsOfUseTextUpdateDateTime | dateTime | Tipo dateTime di attestazione per verificare se è precedente o successivo all'attestazione termsOfUseConsentDateTime di input. La parte dell'ora della data è facoltativa. |
OutputClaim | result | boolean | Tipo di attestazione generato dopo che questa trasformazione attestazioni è stata richiamata. |
Utilizzare questa trasformazione attestazioni per determinare se un dateTime
tipo di attestazione è precedente o maggiore di una data specifica. Ad esempio, verificare se un utente ha acconsentito alla versione più recente delle condizioni di utilizzo (TOU) o delle condizioni di servizio. Per controllare l'ultima volta che un utente ha accettato, archiviare l'ultima volta che l'utente ha accettato l'oggetto TOU in un attributo di estensione. Quando la parola TOU cambia, aggiornare il termsOfUseTextUpdateDateTime
parametro di input con l'ora della modifica. Chiamare quindi questa trasformazione attestazioni per confrontare le date. Se la trasformazione attestazioni restituisce true
, il termsOfUseConsentDateTime
valore è precedente termsOfUseTextUpdateDateTime
al valore e è possibile chiedere all'utente di accettare l'oggetto TOU aggiornato.
<ClaimsTransformation Id="IsTermsOfUseConsentRequired" TransformationMethod="IsTermsOfUseConsentRequired">
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_termsOfUseConsentDateTime" TransformationClaimType="termsOfUseConsentDateTime" />
</InputClaims>
<InputParameters>
<InputParameter Id="termsOfUseTextUpdateDateTime" DataType="dateTime" Value="2021-11-15T00:00:00" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="result" />
</OutputClaims>
</ClaimsTransformation>
Esempio isTermsOfUseConsentRequired
- Attestazioni di input:
- termsOfUseConsentDateTime: 2020-03-09T09:15:00
- Parametri di input:
- termsOfUseTextUpdateDateTime: 2021-11-15
- Attestazioni di output:
- risultato: true
GetCurrentDateTime
Ottenere la data e l'ora UTC correnti e aggiungere il valore a un tipo di attestazione. Vedere la demo live di questa trasformazione delle attestazioni.
Elemento | TransformationClaimType | Tipo di dati | Note |
---|---|---|---|
OutputClaim | currentDateTime | dateTime | Tipo di attestazione generato dopo che questa trasformazione attestazioni è stata richiamata. |
Esempio di GetCurrentDateTime
Nell'esempio seguente viene illustrato come ottenere i dati e l'ora correnti:
<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
</OutputClaims>
</ClaimsTransformation>
- Attestazioni di output:
- currentDateTime: 2022-01-14T11:40:35.0000000Z
Passaggi successivi
- Trovare altri esempi di trasformazione attestazioni nel repository GitHub della community di Azure AD B2C