Condividi tramite


Trasformazioni delle attestazioni di data

Importante

A partire dal 1° maggio 2025, Azure AD B2C non sarà più disponibile per l'acquisto per i nuovi clienti. Altre informazioni sono disponibili nelle domande frequenti.

Questo articolo fornisce esempi per l'uso delle trasformazioni delle attestazioni di data dello schema di Identity Experience Framework in Azure Active Directory B2C (Azure AD B2C). Per altre informazioni, vedere Trasformazioni delle attestazioni.

AssertDateTimeIsGreaterThan

Asserisce che una data è successiva a una seconda data. Determina se è rightOperand maggiore di leftOperand. In caso affermativo, genera un'eccezione. Vedere la demo live di questa trasformazione delle attestazioni.

Elemento TransformationClaimType Tipo di dati Note
InputClaim leftOperando corda Tipo di prima attestazione, che deve essere successivo alla seconda attestazione.
InputClaim destraOperando corda Tipo di seconda attestazione, che deve essere precedente alla prima attestazione.
Parametro di Input AsserzioneSeUguale a booleano Specifica se l'asserzione deve generare un errore se l'operando sinistro è uguale all'operando destro. I valori possibili sono: true (impostazione predefinita) o false.
Parametro di Input AssertIfRightOperandIsNotPresent booleano Specifica se l'asserzione deve passare se manca l'operando destro.
Parametro di Input TreatAsEqualIfWithinMillseconds Int Specifica il numero di millisecondi da consentire tra le due date di considerare l'ora uguale ,ad esempio per tenere conto dell'asimmetria dell'orologio.

La trasformazione delle attestazioni AssertDateTimeIsGreaterThan viene sempre eseguita da un profilo tecnico di convalida chiamato da un profilo tecnico autocertificato. I metadati del profilo tecnico autocertivi 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 delle attestazioni AssertStringClaimsAreEqual.

Esempio di AssertDateTimeIsGreaterThan

Nell'esempio seguente viene confrontata l'attestazione currentDateTime con l'attestazione approvedDateTime . Viene generato un errore se currentDateTime è successivo a approvedDateTime. La trasformazione considera i valori uguali se sono entro 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>

Annotazioni

Nell'esempio precedente, se si rimuove il AssertIfEqualTo parametro di input e è currentDateTime uguale aapprovedDateTime , verrà generato un errore. Il AssertIfEqualTo valore predefinito è true.

  • Attestazioni di input:
    • a sinistraOperando: 2022-01-01T15:00:00
    • destraOperando: 2022-01-22T15:00:00
  • Parametri di input:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: vero
    • TreatAsEqualIfWithinMillseconds: 300000 (30 secondi)
  • Risultato: errore generato

Chiamare la trasformazione delle attestazioni

Il profilo tecnico di convalida seguente Example-AssertDates chiama la AssertApprovedDateTimeLaterThanCurrentDateTime trasformazione delle 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 autocertificato 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>

ConvertDateTimeToDateClaim

Converte un DateTime tipo di attestazione in un Date tipo di attestazione. La trasformazione delle 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 data e ora Tipo di attestazione da convertire.
Attestazione di produzione Richiesta di uscita dattero Tipo di attestazione generato dopo la chiamata di questa trasformazione delle attestazioni.

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:
    • reclamo: 2022-01-03

ConvertDateToDateTimeClaim

Converte un Date tipo di attestazione in un DateTime tipo di attestazione. La trasformazione delle attestazioni converte il formato 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 dattero Tipo di attestazione da convertire.
Attestazione di produzione Richiesta di uscita data e ora Tipo di attestazione generato dopo la chiamata di questa trasformazione delle attestazioni.

Esempio di ConvertDateToDateTimeClaim

Nell'esempio seguente viene illustrata 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:
    • Richiesta di uscita: 2022-01-03T00:00:00.00000000Z

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 pari true a o false. Vedere la demo live di questa trasformazione delle attestazioni.

Elemento TransformationClaimType Tipo di dati Note
InputClaim firstDateTime data e ora La prima data da confrontare se è successiva, precedente o uguale alla seconda data. I valori Null generano un'eccezione.
InputClaim secondDateTime data e ora Seconda data da confrontare. Il valore Null viene considerato come data e ora correnti.
Parametro di Input timeSpanInSeconds Int Intervallo di tempo da aggiungere alla prima data. Valori possibili: intervallo compreso tra -2.147.483.648 e positivo 2.147.483.647.
Parametro di Input operatore corda Uno dei valori seguenti: same, later thano earlier than.
Attestazione di produzione risultato booleano Attestazione generata dopo che è stata richiamata la trasformazione delle attestazioni.

Esempio di DateTimeComparison

Utilizzare questa trasformazione delle attestazioni per determinare se la prima data più 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.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • Parametri di input:
    • operatore: più tardi di
    • timeSpanInSeconds: 7776000 (90 giorni)
  • Attestazioni di output:
    • risultato: true

ÈTermsOfUseConsentRequired

Determinare se un dateTime tipo di attestazione è precedente o maggiore di una data specifica. Il risultato è una nuova attestazione booleana con un valore pari true a o false. Vedere la demo live di questa trasformazione delle attestazioni.

Elemento TransformationClaimType Tipo di dati Note
InputClaim termsOfUseConsentDateTime data e ora Tipo dateTime di attestazione per verificare se è precedente o successivo al termsOfUseTextUpdateDateTime parametro di input. Il valore non definito restituisce true il risultato.
Parametro di Input termsOfUseTextUpdateDateTime data e ora Tipo dateTime di attestazione per verificare se è precedente o successivo all'attestazione termsOfUseConsentDateTime di input. La parte relativa all'ora della data è facoltativa.
Attestazione di produzione risultato booleano Tipo di attestazione generato dopo la chiamata di questa trasformazione delle attestazioni.

Utilizzare questa trasformazione delle attestazioni per determinare se un dateTime tipo di attestazione è precedente o maggiore di una data specifica. Ad esempio, controllare se un utente ha acconsentito alla versione più recente delle condizioni per l'utilizzo (TOU) o condizioni per l'utilizzo. Per controllare l'ultima volta che un utente ha acconsentito, archiviare l'ultima volta che l'utente ha accettato l'oggetto TOU in un attributo di estensione. Quando la parola tou viene modificata, aggiornare il termsOfUseTextUpdateDateTime parametro di input con l'ora della modifica. Chiamare quindi questa trasformazione delle attestazioni per confrontare le date. Se la trasformazione delle attestazioni restituisce true, il termsOfUseConsentDateTime valore è precedente al termsOfUseTextUpdateDateTime valore ed è 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
Attestazione di produzione currentDateTime data e ora Tipo di attestazione generato dopo la chiamata di questa trasformazione delle attestazioni.

Esempio di GetCurrentDateTime

L'esempio seguente illustra 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