날짜 클레임 변환
이 문서에서는 Azure AD B2C(Azure Active Directory B2C)에서 Identity Experience Framework 스키마의 날짜 클레임 변환을 사용하는 예제를 제공합니다. 자세한 내용은 클레임 변환을 참조하세요.
AssertDateTimeIsGreaterThan
한 날짜가 두 번째 날짜보다 이후임을 어설션합니다.
rightOperand
가 leftOperand
보다 큰지 여부를 확인합니다. 그렇다면 예외가 발생합니다. 이 클레임 변환의 라이브 데모를 확인하세요.
요소 | TransformationClaimType | 데이터 형식 | 메모 |
---|---|---|---|
InputClaim | leftOperand | 문자열 | 첫 번째 클레임의 유형이며, 두 번째 클레임보다 나중에 나와야 합니다. |
InputClaim | rightOperand | 문자열 | 두 번째 클레임의 유형이며, 첫 번째 클레임보다 먼저 나와야 합니다. |
InputParameter | AssertIfEqualTo | boolean | 왼쪽 피연산자가 오른쪽 피연산자와 같으면 이 어설션에서 오류를 throw해야 하는지 여부를 지정합니다. 가능한 값은 true (기본값) 또는 false 입니다. |
InputParameter | AssertIfRightOperandIsNotPresent | boolean | 오른쪽 피연산자가 없으면 이 어설션에서 전달해야 하는지 여부를 지정합니다. |
InputParameter | TreatAsEqualIfWithinMillseconds | int | 두 날짜 /시간 사이의 시간을 동일하게 간주하도록 허용할 시간(밀리초)을 지정합니다(예: 클럭 스큐). |
AssertDateTimeIsGreaterThan 클레임 변환은 항상 자체 어설션된 기술 프로필을 통해 호출되는 유효성 검사 기술 프로필에서 실행됩니다. 자체 어설션된 DateTimeGreaterThan 기술 프로필 메타데이터는 기술 프로필에서 사용자에게 제공하는 오류 메시지를 제어합니다. 오류 메시지는 지역화될 수 있습니다.
AssertDateTimeIsGreaterThan의 예
다음 예제에서는 currentDateTime
클레임과 approvedDateTime
클레임을 비교합니다.
currentDateTime
이 approvedDateTime
보다 큰 경우 오류가 throw됩니다. 차이가 5분(30,000밀리초) 이내인 경우 변환에서 값을 동일하게 처리합니다.
AssertIfEqualTo
가 false
로 설정되어 있으므로 값이 같으면 오류가 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
입력 매개 변수를 제거하고 currentDateTime
이 approvedDateTime
과 같으면 오류가 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
다음 단계
- Azure AD B2C 커뮤니티 GitHub 리포지토리에서 더 많은 클레임 변환 샘플 찾기