Transformações de afirmações de data
Este artigo fornece exemplos para utilizar as transformações de afirmações de data do esquema do Identity Experience Framework no Azure Active Directory B2C (Azure AD B2C). Para obter mais informações, veja transformações de afirmações.
AssertDateTimeIsGreaterThan
Afirma que uma data é posterior a uma segunda data. Determina se o rightOperand
é maior que o leftOperand
. Se sim, gera uma exceção. Veja a demonstração em direto desta transformação de afirmações.
Elemento | TransformationClaimType | Tipo de Dados | Notas |
---|---|---|---|
InputClaim | leftOperand | string | O tipo da primeira afirmação, que deve ser posterior à segunda afirmação. |
InputClaim | rightOperand | string | Tipo de segunda afirmação, que deve ser anterior à primeira afirmação. |
InputParameter | AssertIfEqualTo | boolean | Especifica se esta afirmação deve gerar um erro se o operando esquerdo for igual ao operando direito. Valores possíveis: true (predefinição) ou false . |
InputParameter | AssertIfRightOperandIsNotPresent | boolean | Especifica se esta afirmação deve passar se o operando certo estiver em falta. |
InputParameter | TreatAsEqualIfWithinMillseconds | int | Especifica o número de milissegundos a permitir 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 afirmações AssertDateTimeIsGreaterThan é sempre executada a partir de um perfil técnico de validação chamado por um perfil técnico auto-afirmado. Os metadados de perfil técnico dateTimeGreaterThan auto-afirmado controlam a mensagem de erro que o perfil técnico apresenta ao utilizador. As mensagens de erro podem ser localizadas.
Exemplo de AssertDateTimeIsGreaterThan
O exemplo seguinte compara a currentDateTime
afirmação com a approvedDateTime
afirmação. É emitido um erro 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. Não emitirá um erro se os valores forem iguais porque AssertIfEqualTo
estão definidos 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>
Nota
No exemplo acima, se remover o AssertIfEqualTo
parâmetro de entrada e for currentDateTime
igual aapprovedDateTime
, será emitido um erro. O AssertIfEqualTo
valor predefinido é true
.
- Afirmações de entrada:
- leftOperand: 2022-01-01T15:00:00
- rightOperand: 2022-01-22T15:00:00
- Parâmetros de entrada:
- AssertIfEqualTo: false
- AssertIfRightOperandIsNotPresent: true
- TreatAsEqualIfWithinMillseconds: 300000 (30 segundos)
- Resultado: Erro emitido
Chamar a transformação de afirmações
O seguinte Example-AssertDates
perfil técnico de validação chama a transformação de AssertApprovedDateTimeLaterThanCurrentDateTime
afirmaçõ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 auto-afirmado 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 tipo de DateTime
afirmação num tipo de Date
afirmação. A transformação de afirmações remove o formato de hora da data. Veja a demonstração em direto desta transformação de afirmações.
Elemento | TransformationClaimType | Tipo de Dados | Notas |
---|---|---|---|
InputClaim | inputClaim | dateTime | O tipo de afirmação a converter. |
OutputClaim | outputClaim | data | O tipo de afirmação produzido após a invocação desta transformação de afirmações. |
Exemplo de ConvertDateTimeToDateClaim
O exemplo seguinte demonstra a conversão da afirmação systemDateTime
(tipo de dados dateTime) para outra afirmaçã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>
- Afirmações de entrada:
- inputClaim: 2022-01-03T11:34:22.0000000Z
- Afirmações de saída:
- outputClaim: 2022-01-03
ConvertDateToDateTimeClaim
Converte um tipo de Date
afirmação num tipo de DateTime
afirmação. A transformação de afirmações converte o formato de hora e adiciona 00:00 à data. Veja a demonstração em direto desta transformação de afirmações.
Elemento | TransformationClaimType | Tipo de Dados | Notas |
---|---|---|---|
InputClaim | inputClaim | data | O tipo de afirmação a converter. |
OutputClaim | outputClaim | dateTime | O tipo de afirmação produzido após a invocação desta transformação de afirmações. |
Exemplo de ConvertDateToDateTimeClaim
O exemplo seguinte demonstra a conversão da afirmação dateOfBirth
(tipo de dados de data) para outra afirmaçã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>
- Afirmações de entrada:
- inputClaim: 2022-01-03
- Afirmações de saída:
- outputClaim: 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 afirmação booleana com um valor de true
ou false
. Veja a Demonstração em direto desta transformação de afirmações.
Elemento | TransformationClaimType | Tipo de Dados | Notas |
---|---|---|---|
InputClaim | firstDateTime | dateTime | A primeira data para comparar se é posterior, anterior ou igual à segunda data. O valor nulo gera uma exceção. |
InputClaim | secondDateTime | dateTime | A segunda data a comparar. O valor nulo é tratado como a data e hora atuais. |
InputParameter | timeSpanInSeconds | int | Período de tempo a adicionar à primeira data. Valores possíveis: variam entre negativo -2.147.483.648 e positivo 2.147.483.647. |
InputParameter | operador | string | Um dos seguintes valores: same , later than ou earlier than . |
OutputClaim | result | boolean | A afirmação que é produzida após esta transformação de afirmações ter sido invocada. |
Exemplo de DateTimeComparison
Utilize esta transformação de afirmações para determinar se a primeira data mais o timeSpanInSeconds
parâmetro é posterior, anterior ou igual a outra. O exemplo seguinte mostra que a primeira data (2022-01-01T00:00:00) mais 90 dias é posterior à segunda data (2022-03-16T00:00: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>
- Afirmaçõ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)
- Afirmações de saída:
- resultado: verdadeiro
IsTermsOfUseConsentRequired
Determine se um tipo de dateTime
afirmação é anterior ou superior a uma data específica. O resultado é uma nova afirmação booleana com um valor de true
ou false
. Veja a Demonstração em direto desta transformação de afirmações.
Item | TransformationClaimType | Tipo de dados | Notas |
---|---|---|---|
InputClaim | termsOfUseConsentDateTime | dateTime | O dateTime tipo de afirmação para verificar se é anterior ou posterior ao termsOfUseTextUpdateDateTime parâmetro de entrada. O valor indefinido devolve true o resultado. |
InputParameter | termsOfUseTextUpdateDateTime | dateTime | O dateTime tipo de afirmação para verificar se é anterior ou posterior à termsOfUseConsentDateTime afirmação de entrada. A parte da hora da data é opcional. |
OutputClaim | result | boolean | O tipo de afirmação produzido após esta transformação de afirmações ter sido invocada. |
Utilize esta transformação de afirmações para determinar se um dateTime
tipo de afirmação é anterior ou superior a uma data específica. Por exemplo, verifique se um utilizador deu consentimento para a versão mais recente dos seus termos de utilização (TOU) ou termos de serviço. Para verificar a última vez que um utilizador consentiu, armazene a última vez que o utilizador aceitou a TOU num atributo de extensão. Quando a sua redação tou for alterada, atualize o termsOfUseTextUpdateDateTime
parâmetro de entrada com a hora da alteração. Em seguida, chame esta transformação de afirmações para comparar as datas. Se a transformação de afirmações devolver true
, o termsOfUseConsentDateTime
valor é anterior ao termsOfUseTextUpdateDateTime
valor e pode pedir ao utilizador para aceitar a TOU atualizada.
<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 isTermsOfUseConsentRequired
- Afirmações de entrada:
- termsOfUseConsentDateTime: 2020-03-09T09:15:00
- Parâmetros de entrada:
- termsOfUseTextUpdateDateTime: 2021-11-15
- Afirmações de saída:
- resultado: verdadeiro
GetCurrentDateTime
Obtenha a data e hora UTC atuais e adicione o valor a um tipo de afirmação. Veja a Demonstração em direto desta transformação de afirmações.
Elemento | TransformationClaimType | Tipo de Dados | Notas |
---|---|---|---|
OutputClaim | currentDateTime | dateTime | O tipo de afirmação que é produzido após esta transformação de afirmações ter sido invocada. |
Exemplo de GetCurrentDateTime
O exemplo seguinte mostra como obter os dados e a hora atuais:
<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
</OutputClaims>
</ClaimsTransformation>
- Afirmações de saída:
- currentDateTime: 2022-01-14T11:40:35.0000000Z
Passos seguintes
- Encontre mais exemplos de transformação de afirmações no repositório gitHub da comunidade B2C do Azure AD