Partilhar 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 nas 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 Ative Directory B2C (Azure AD B2C). Para obter mais informações, consulte Transformações de declarações.

AssertDateTimeIsGreaterThan

Afirma que uma data é posterior a uma segunda data. Determina se o é maior que o rightOperandleftOperand. Se sim, lança uma exceção. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de dados Observações
InputClaim leftOperand corda Tipo do primeiro pedido, que deve ser posterior ao segundo.
InputClaim direitaOperand corda Tipo de segundo pedido, que deve ser anterior ao primeiro pedido.
Parâmetro de Entrada AssertIfEqualTo Booleano Especifica se essa asserção deve gerar um erro se o operando esquerdo for igual ao operando direito. Valores possíveis: true (padrão) ou false.
Parâmetro de Entrada AssertIfRightOperandIsNotPresent Booleano Especifica se essa asserção deve passar se o operando correto estiver ausente.
Parâmetro de Entrada TreatAsEqualIfWithinMillseconds Int Especifica o número de milissegundos a ser permitido entre as duas horas de data para considerar as horas iguais (por exemplo, para contabilizar 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 que é chamado por um perfil técnico autodeclarado. Os metadados do perfil técnico autodeclarado DateTimeGreaterThan controlam a mensagem de erro que o perfil técnico apresenta ao usuário. As mensagens de erro podem ser localizadas.

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

Exemplo de AssertDateTimeIsGreaterThan

O exemplo a seguir compara a currentDateTime reivindicação com a approvedDateTime reivindicação. Um erro é lançado se currentDateTime for posterior a approvedDateTime. A transformação trata os valores como iguais se estiverem dentro de 5 minutos (30000 milissegundos) de diferença. Ele não lançará 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 o currentDateTime for igual aapprovedDateTime, um erro será lançado. O AssertIfEqualTo valor padrão é true.

  • Declarações de entrada:
    • leftOperand: 2022-01-01T15:00:00
    • rightOperand: 2022-01-22T15:00:00
  • Parâmetros de entrada:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: verdadeiro
    • TreatAsEqualIfWithinMillseconds: 300000 (30 segundos)
  • Resultado: Erro lançado

Chamar a transformação de declarações

O perfil técnico de validação a seguir Example-AssertDates chama a transformação de AssertApprovedDateTimeLaterThanCurrentDateTime 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 autoafirmado 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 Date tipo de declaração. A transformação de declarações remove o formato de hora da data. Confira a demonstração ao vivo dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de dados Observações
InputClaim inputClaim data e hora O tipo de declaração a ser convertido.
OutputClaim outputClaim data O tipo de declaração que é produzido após essa transformação de declarações ter sido invocada.

Exemplo de ConvertDateTimeToDateClaim

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

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

ConvertDateToDateTimeClaim

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

Elemento TransformationClaimType Tipo de dados Observações
InputClaim inputClaim data O tipo de declaração a ser convertido.
OutputClaim outputClaim data e hora O tipo de declaração que é produzido após essa transformação de declarações ter sido invocada.

Exemplo de ConvertDateToDateTimeClaim

O exemplo a seguir demonstra a conversão da declaração dateOfBirth (tipo de dados date) em 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: 2022-01-03
  • Declarações de saída:
    • outputClaim: 2022-01-03T00:00:00.00000000Z

DateTimeComparison

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

Elemento TransformationClaimType Tipo de dados Observações
InputClaim firstDateTime data e hora A primeira data para comparar se é posterior, anterior ou igual à segunda data. Valor nulo lança uma exceção.
InputClaim segundoDateTime data e hora A segunda data para comparar. O valor nulo é tratado como a data e hora atuais.
Parâmetro de Entrada timeSpanInSeconds Int Período de tempo para adicionar à primeira data. Valores possíveis: variam de negativos -2.147.483.648 a positivos 2.147.483.647.
Parâmetro de Entrada operador corda Um dos seguintes valores: same, later than, ou earlier than.
OutputClaim Resultado Booleano A alegação que é produzida após essa transformação de reivindicações foi invocada.

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 outra. 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
    • segundoDateTime: 2022-03-16T00:00:00.100000Z
  • Parâmetros de entrada:
    • operador: mais tarde do que
    • timeSpanInSeconds: 7776000 (90 dias)
  • Declarações de saída:
    • Resultado: verdadeiro

ÉTermos de UsoConsentimentoObrigatório

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

Iteme TransformationClaimType Tipo de dados Observações
InputClaim termosdeusoConsentimentoDataHora data e hora O dateTime tipo de declaração para verificar se é anterior ou posterior ao termsOfUseTextUpdateDateTime parâmetro de entrada. O valor indefinido retorna true o resultado.
Parâmetro de Entrada termosOfUseTextUpdateDateTime data e hora O dateTime tipo de declaração para verificar se é anterior ou posterior à termsOfUseConsentDateTime declaração de entrada. A parte de tempo da data é opcional.
OutputClaim Resultado Booleano O tipo de declaração que é produzido após essa transformação de declarações foi invocado.

Use essa transformação de declarações para determinar se um tipo de dateTime declaração é anterior ou maior do que uma data específica. Por exemplo, verifique se um utilizador consentiu com a versão mais recente dos seus termos de utilização (TDU) ou termos de serviço. Para verificar a última vez que um usuário consentiu, armazene a última vez que o usuário aceitou os TDU em um atributo de extensão. Quando a redação do TOU mudar, atualize o termsOfUseTextUpdateDateTime parâmetro de entrada com a hora 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 é anterior ao termsOfUseTextUpdateDateTime valor, e você pode pedir ao usuário para aceitar os TDU atualizados.

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

IsTermsOfUseConsentExemplo obrigatório

  • Declarações de entrada:
    • termosdeusoConsentimentoDataHora: 2020-03-09T09:15:00
  • Parâmetros de entrada:
    • termosOfUseTextUpdateDateTime: 2021-11-15
  • Declarações de saída:
    • Resultado: verdadeiro

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 dessa transformação de reivindicações.

Elemento TransformationClaimType Tipo de dados Observações
OutputClaim currentDateTime data e hora O tipo de declaração que é produzido após essa transformação de declarações ter sido invocada.

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.00000000Z

Próximos passos

  • Encontre mais exemplos de transformação de declarações no repositório GitHub da comunidade do Azure AD B2C