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 rightOperandleftOperandè 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.

I diagrammi illustrano come usare la trasformazione attestazioni AssertStringClaimsAreEqual.

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 thano 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