날짜 클레임 변환

이 문서에서는 Azure AD B2C(Azure Active Directory B2C)에서 Identity Experience Framework 스키마의 날짜 클레임 변환을 사용하는 예제를 제공합니다. 자세한 내용은 클레임 변환을 참조하세요.

AssertDateTimeIsGreaterThan

한 날짜가 두 번째 날짜보다 이후임을 어설션합니다. rightOperandleftOperand보다 큰지 여부를 확인합니다. 그렇다면 예외가 발생합니다. 이 클레임 변환의 라이브 데모를 확인하세요.

요소 TransformationClaimType 데이터 형식 메모
InputClaim leftOperand 문자열 첫 번째 클레임의 유형이며, 두 번째 클레임보다 나중에 나와야 합니다.
InputClaim rightOperand 문자열 두 번째 클레임의 유형이며, 첫 번째 클레임보다 먼저 나와야 합니다.
InputParameter AssertIfEqualTo boolean 왼쪽 피연산자가 오른쪽 피연산자와 같으면 이 어설션에서 오류를 throw해야 하는지 여부를 지정합니다. 가능한 값은 true(기본값) 또는 false입니다.
InputParameter AssertIfRightOperandIsNotPresent boolean 오른쪽 피연산자가 없으면 이 어설션에서 전달해야 하는지 여부를 지정합니다.
InputParameter TreatAsEqualIfWithinMillseconds int 두 날짜 /시간 사이의 시간을 동일하게 간주하도록 허용할 시간(밀리초)을 지정합니다(예: 클럭 스큐).

AssertDateTimeIsGreaterThan 클레임 변환은 항상 자체 어설션된 기술 프로필을 통해 호출되는 유효성 검사 기술 프로필에서 실행됩니다. 자체 어설션된 DateTimeGreaterThan 기술 프로필 메타데이터는 기술 프로필에서 사용자에게 제공하는 오류 메시지를 제어합니다. 오류 메시지는 지역화될 수 있습니다.

AssertStringClaimsAreEqual 클레임 변환을 사용하는 방법을 보여 주는 다이어그램

AssertDateTimeIsGreaterThan의 예

다음 예제에서는 currentDateTime 클레임과 approvedDateTime 클레임을 비교합니다. currentDateTimeapprovedDateTime보다 큰 경우 오류가 throw됩니다. 차이가 5분(30,000밀리초) 이내인 경우 변환에서 값을 동일하게 처리합니다. AssertIfEqualTofalse로 설정되어 있으므로 값이 같으면 오류가 throw되지 않습니다.

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

참고

위의 예제에서 AssertIfEqualTo 입력 매개 변수를 제거하고 currentDateTimeapprovedDateTime과 같으면 오류가 throw됩니다. AssertIfEqualTo 기본값은 true입니다.

  • 입력 클레임:
    • leftOperand: 2022-01-01T15:00:00
    • rightOperand: 2022-01-22T15:00:00
  • 입력 매개 변수:
    • AssertIfEqualTo: false
    • AssertIfRightOperandIsNotPresent: true
    • TreatAsEqualIfWithinMillseconds: 300000(30초)
  • 결과: 오류가 throw됨

클레임 변환 호출

다음 Example-AssertDates 유효성 검사 기술 프로필은 AssertApprovedDateTimeLaterThanCurrentDateTime 클레임 변환을 호출합니다.

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

자체 어설션된 기술 프로필은 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

DateTime 클레임 유형을 Date 클레임 유형으로 변환합니다. 클레임 변환은 날짜에서 시간 형식을 제거합니다. 이 클레임 변환의 라이브 데모를 확인하세요.

요소 TransformationClaimType 데이터 형식 메모
InputClaim inputClaim dateTime 변환할 클레임 형식입니다.
OutputClaim outputClaim date 이 클레임 변환을 호출하고 나면 생성되는 클레임 형식입니다.

ConvertDateTimeToDateClaim의 예

다음 예제에서는 systemDateTime 클레임(dateTime 데이터 형식)을 다른 systemDate 클레임(date 데이터 형식)으로 변환하는 방법을 보여줍니다.

<ClaimsTransformation Id="ConvertToDate" TransformationMethod="ConvertDateTimeToDateClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDate" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 입력 클레임:
    • inputClaim: 2022-01-03T11:34:22.0000000Z
  • 출력 클레임:
    • outputClaim: 2022-01-03

ConvertDateToDateTimeClaim

Date 클레임 유형을 DateTime 클레임 유형으로 변환합니다. 클레임 변환은 시간 형식을 변환하고 날짜에 12:00:00 AM을 추가합니다. 이 클레임 변환의 라이브 데모를 확인하세요.

요소 TransformationClaimType 데이터 형식 메모
InputClaim inputClaim date 변환할 클레임 형식입니다.
OutputClaim outputClaim dateTime 이 클레임 변환을 호출하고 나면 생성되는 클레임 형식입니다.

ConvertDateToDateTimeClaim의 예

다음 예제에서는 dateOfBirth 클레임(date 데이터 형식)을 다른 dateOfBirthWithTime 클레임(dateTime 데이터 형식)으로 변환하는 방법을 보여 줍니다.

  <ClaimsTransformation Id="ConvertToDateTime" TransformationMethod="ConvertDateToDateTimeClaim">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="dateOfBirth" TransformationClaimType="inputClaim" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="dateOfBirthWithTime" TransformationClaimType="outputClaim" />
    </OutputClaims>
  </ClaimsTransformation>
  • 입력 클레임:
    • inputClaim: 2022-01-03
  • 출력 클레임:
    • outputClaim: 2022-01-03T00:00:00.0000000Z

DateTimeComparison

두 날짜를 비교하여 첫 번째 날짜가 이후인지, 이전인지 또는 다른 날짜와 같은지 확인합니다. 결과는 값이 true 또는 false인 새 부울 클레임입니다. 이 클레임 변환의 라이브 데모를 확인하세요.

요소 TransformationClaimType 데이터 형식 메모
InputClaim firstDateTime dateTime 두 번째 날짜보다 이후인지, 이전인지 또는 같은지 비교할 첫 번째 날짜입니다. null 값은 예외를 throw합니다.
InputClaim secondDateTime dateTime 비교할 두 번째 날짜입니다. Null 값은 현재 날짜 및 시간으로 처리됩니다.
InputParameter timeSpanInSeconds int 첫 번째 날짜에 추가할 Timespan입니다. 가능한 값: 음수 -2,147,483,648부터 양수 2,147,483,647까지입니다.
InputParameter operator 문자열 same, later than 또는 earlier than 값 중 하나입니다.
OutputClaim result boolean 이 클레임 변환이 호출된 후에 생성되는 클레임입니다.

DateTimeComparison의 예

이 클레임 변환을 사용하여 첫 번째 날짜에 timeSpanInSeconds 매개 변수를 더한 날짜가 이후인지, 이전인지 또는 다른 날짜와 같은지 확인합니다. 다음 예제에서는 첫 번째 날짜(2022-01-01T00:00:00)에 90일을 더한 날짜가 두 번째 날짜(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>
  • 입력 클레임:
    • firstDateTime: 2022-01-01T00:00:00.100000Z
    • secondDateTime: 2022-03-16T00:00:00.100000Z
  • 입력 매개 변수:
    • operator: 보다 나중
    • timeSpanInSeconds: 7776000(90일)
  • 출력 클레임:
    • result: true

IsTermsOfUseConsentRequired

dateTime 클레임 유형이 특정 날짜보다 이전인지 또는 이후인지 확인합니다. 결과는 값이 true 또는 false인 새 부울 클레임입니다. 이 클레임 변환의 라이브 데모를 확인하세요.

항목 TransformationClaimType 데이터 형식 메모
InputClaim termsOfUseConsentDateTime dateTime termsOfUseTextUpdateDateTime 입력 매개 변수보다 이전인지 또는 이후인지 확인할 dateTime 클레임 형식입니다. 정의되지 않은 값은 true 결과를 반환합니다.
InputParameter termsOfUseTextUpdateDateTime dateTime termsOfUseConsentDateTime 입력 클레임보다 이전인지 또는 이후인지 확인할 dateTime 클레임 형식입니다. 날짜의 시간 부분은 선택 사항입니다.
OutputClaim result boolean 이 클레임 변환을 호출하고 나면 생성되는 클레임 형식입니다.

이 클레임 변환을 사용하여 dateTime 클레임 유형이 특정 날짜보다 이전인지 또는 이후인지 확인합니다. 예를 들어 사용자가 최신 버전의 TOU(사용 약관) 또는 서비스 약관에 동의했는지 확인합니다. 사용자가 마지막으로 동의한 시간을 확인하려면 사용자가 TOU를 마지막으로 수락한 시간을 확장 특성에 저장합니다. TOU 표현이 변경되면 termsOfUseTextUpdateDateTime 입력 매개 변수를 변경 시간으로 업데이트합니다. 그런 다음, 이 클레임 변환을 호출하여 날짜를 비교합니다. 클레임 변환에서 true를 반환하는 경우 termsOfUseConsentDateTime 값은 termsOfUseTextUpdateDateTime 값보다 이전이며 업데이트된 TOU를 수락하도록 사용자에게 요청할 수 있습니다.

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

IsTermsOfUseConsentRequired example

  • 입력 클레임:
    • termsOfUseConsentDateTime: 2020-03-09T09:15:00
  • 입력 매개 변수:
    • termsOfUseTextUpdateDateTime: 2021-11-15
  • 출력 클레임:
    • result: true

GetCurrentDateTime

현재 UTC 날짜 및 시간을 가져오고, 이 값을 클레임 유형에 추가합니다. 이 클레임 변환의 라이브 데모를 확인하세요.

요소 TransformationClaimType 데이터 형식 메모
OutputClaim currentDateTime dateTime 이 클레임 변환을 호출하고 나면 생성되는 클레임 형식입니다.

GetCurrentDateTime의 예

다음 예제에서는 현재 데이터 및 시간을 가져오는 방법을 보여줍니다.

<ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
  </OutputClaims>
</ClaimsTransformation>
  • 출력 클레임:
    • currentDateTime: 2022-01-14T11:40:35.0000000Z

다음 단계