Compartilhar via


Transformações de declarações de data

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.

Este artigo fornece exemplos para usar as transformações de declarações de data do esquema do Identity Experience Framework no Azure AD B2C (Azure Active Directory B2C). Para obter mais informações, consulte transformações de declarações.

AssertDateTimeIsGreaterThan

Afirma que uma data é posterior a uma segunda data. Determina se a opção rightOperand é maior que a leftOperand. Se sim, gera uma exceção. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Anotações
Reivindicação de entrada leftOperand corda O tipo da primeira declaração, que deve ser posterior à segunda declaração.
Reivindicação de entrada direito operando corda Tipo de segunda declaração, que deve ser anterior à primeira declaração.
Parâmetro de entrada AssertIfEqualTo booleano Especifica se essa asserção deve gerar um erro se o operando esquerdo for igual ao operando à direita. Valores possíveis: true (padrão) ou false.
Parâmetro de entrada AssertIfRightOperandIsNotPresent booleano Especifica se essa asserção deve passar se o operando certo estiver ausente.
Parâmetro de entrada TreatAsEqualIfWithinMillseconds int Especifica o número de milissegundos para permitir que entre as duas datas considere os tempos iguais (por exemplo, para considerar a distorção do relógio).

A transformação de declarações AssertDateTimeIsGreaterThan é sempre executada a partir de um perfil técnico de validação chamado por um perfil técnico autodeclarado. Os metadados de perfil técnico autodeclarado DateTimeGreaterThan controlam a mensagem de erro que o perfil técnico apresenta ao usuário. A mensagem de erro pode ser localizada.

Diagramas mostram como usar a transformação de declarações AssertStringClaimsAreEqual.

Exemplo de AssertDateTimeIsGreaterThan

O exemplo a seguir compara a currentDateTime declaração com a declaração approvedDateTime . Um erro será gerado se currentDateTime for posterior approvedDateTimea . A transformação trata valores como iguais se estiverem dentro de 5 minutos (30000 milissegundos) de diferença. Ele não gerará um erro se os valores forem iguais porque AssertIfEqualTo está definido como 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>

Observação

No exemplo acima, se você remover o AssertIfEqualTo parâmetro de entrada e for currentDateTime igual aapprovedDateTime, um erro será gerado. O AssertIfEqualTo valor padrão é true.

  • Declarações de entrada:
    • leftOperand: 2022-01-01T15:00:00
    • direitaOperando: 2022-01-22T15:00:00
  • Parâmetros de entrada:
    • AssertIfEqualTo: falso
    • AssertIfRightOperandIsNotPresent: true
    • TreatAsEqualIfWithinMillseconds: 300000 (30 segundos)
  • Resultado: Erro gerado

Chamar a transformação de declarações

O perfil técnico de validação a seguir Example-AssertDates chama a AssertApprovedDateTimeLaterThanCurrentDateTime transformação de declarações.

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

O perfil técnico autodeclarado chama o perfil técnico de validação 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 um DateTime tipo de declaração em um tipo de Date declaração. A transformação declarações remove o formato de hora da data. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Anotações
Reivindicação de entrada InputClaim data e hora O tipo de declaração a ser convertido.
Declaração de saída declaração de saída data O tipo de declaração que é produzido depois de invocar esta transformação de declarações.

Exemplo de ConvertDateTimeToDateClaim

O exemplo a seguir demonstra a conversão da declaração systemDateTime (tipo de dados dateTime) para outra declaração systemDate (tipo de dados de data).

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: 2022-01-03T11:34:22.0000000Z
  • Declarações de saída:
    • saídaReivindicação: 2022-01-03

ConvertDateToDateTimeClaim

Converte um Date tipo de declaração em um tipo de DateTime declaração. A transformação declarações converte o formato de hora e adiciona 12:00:00 à data. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Anotações
Reivindicação de entrada InputClaim data O tipo de declaração a ser convertido.
Declaração de saída declaração de saída data e hora O tipo de declaração que é produzido depois de invocar esta transformação de declarações.

Exemplo de ConvertDateToDateTimeClaim

O exemplo a seguir demonstra a conversão da declaração dateOfBirth (tipo de dados de data) para outra declaração dateOfBirthWithTime (tipo de dados dateTime).

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • Declarações de entrada:
    • inputClaim: 03/01/2022
  • Declarações de saída:
    • saídaReivindicação: 2022-01-03T00:00:00.0000000Z

DateTimeComparison

Compara duas datas e determina se a primeira data é posterior, anterior ou igual a outra. O resultado é uma nova declaração booliana com um valor de true ou false. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Anotações
Reivindicação de entrada firstDateTime data e hora A primeira data para comparar se é posterior, anterior ou igual à segunda data. Valor nulo gerará uma exceção.
Reivindicação de entrada secondDateTime data e hora A segunda data a ser comparada. O valor nulo é tratado como a data e a hora atuais.
Parâmetro de entrada timeSpanInSeconds int Intervalo de data/hora a ser adicionado à primeira data. Valores possíveis: variam de negativo -2.147.483.648 a positivo 2.147.483.647.
Parâmetro de entrada operador corda Um dos seguintes valores: same, later thanou earlier than.
Declaração de saída resultado booleano A declaração que é produzida após a invocação dessa transformação de declarações.

Exemplo de DateTimeComparison

Use essa transformação de declarações para determinar se a primeira data mais o timeSpanInSeconds parâmetro é posterior, anterior ou igual a outro. O exemplo a seguir mostra que a primeira data (2022-01-01T00:00:00) mais 90 dias é posterior à segunda 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>
  • Declarações de entrada:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • Parâmetros de entrada:
    • operador: posterior a
    • timeSpanInSeconds: 7776000 (90 dias)
  • Declarações de saída:
    • resultado: true

ÉTermosDeUsoConsentimentoObrigatório

Determine se um dateTime tipo de declaração é anterior ou maior que uma data específica. O resultado é uma nova declaração booliana com um valor de true ou false. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de dados Anotações
Reivindicação de entrada termsOfUseConsentDateTime data e hora O dateTime tipo de declaração para verificar se ele é anterior ou posterior ao termsOfUseTextUpdateDateTime parâmetro de entrada. O valor indefinido retorna true o resultado.
Parâmetro de entrada termsOfUseTextUpdateDateTime data e hora O dateTime tipo de declaração para verificar se ele é anterior ou posterior à termsOfUseConsentDateTime declaração de entrada. A parte de hora da data é opcional.
Declaração de saída resultado booleano O tipo de declaração produzido após a invocação dessa transformação de declarações.

Use essa transformação de declarações para determinar se um dateTime tipo de declaração é anterior ou maior que uma data específica. Por exemplo, verifique se um usuário consentiu com a versão mais recente de seus termos de uso (TOU) ou termos de serviço. Para verificar a última vez que um usuário consentiu, armazene a última vez que o usuário aceitou o TOU em um atributo de extensão. Quando a redação do TOU for alterada, atualize o termsOfUseTextUpdateDateTime parâmetro de entrada com o tempo da alteração. Em seguida, chame essa transformação de declarações para comparar as datas. Se a transformação de declarações retornar true, o termsOfUseConsentDateTime valor será anterior ao termsOfUseTextUpdateDateTime valor e você poderá pedir ao usuário para aceitar o TOU atualizado.

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

Exemplo de IsTermsOfUseConsentRequired

  • Declarações de entrada:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • Parâmetros de entrada:
    • termsOfUseTextUpdateDateTime: 15/11/2021
  • Declarações de saída:
    • resultado: true

GetCurrentDateTime

Obtenha a data e a hora utc atuais e adicione o valor a um tipo de declaração. Confira a Demonstração ao vivo desta transformação de declarações.

Elemento TransformationClaimType Tipo de Dados Anotações
Declaração de saída currentDateTime data e hora O tipo de declaração que é produzido depois de invocar esta transformação de declarações.

Exemplo de GetCurrentDateTime

O exemplo a seguir mostra como obter os dados e a hora atuais:

<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
  </OutputClaims>
</ClaimsTransformation>
  • Declarações de saída:
    • currentDateTime: 2022-01-14T11:40:35.0000000Z

Próximas etapas