[英]Set value of input claim based on other input claim that uses claimresolvers in Azure B2C Custom policies
I have the below two input claims我有以下两个输入声明
<InputClaim ClaimTypeReferenceId="isAccessFlow" DefaultValue="{OAUTH-KV:access_flow}" AlwaysUseDefaultValue="true"/>
<InputClaim ClaimTypeReferenceId="prompt" DefaultValue="select_account"/>
I want to assign the value for 'prompt' input claim as 'select_account' only when the isAccessFlow value is not true.仅当isAccessFlow值不为真时,我才想将“提示”输入声明的值分配为“select_account” 。 I am unable to figure out how to write input claim transformations in this case to achieve the requirement.在这种情况下,我无法弄清楚如何编写输入声明转换来实现要求。
Claim Types索赔类型
<ClaimType Id="isAccessFlow">
<DisplayName>Access Flow</DisplayName>
<DataType>string</DataType>
</ClaimType>
<ClaimType Id="prompt">
<DisplayName>prompt</DisplayName>
<DataType>string</DataType>
</ClaimType>
Technical Profiles技术简介
<TechnicalProfile Id="ParseAccessFlow">
<DisplayName>Access Flow</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider,Web.TPEngine, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="isAccessFlow" DefaultValue="{OAUTH-KV:data_flow}" AlwaysUseDefaultValue="true"/>
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isAccessFlow" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssignedAccessFlowValue" />
<OutputClaimsTransformation ReferenceId="ChangeToLower" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
<TechnicalProfile Id="PromptFlow">
<DisplayName>Prompt</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider,Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="AssignedDefaultValue" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="prompt" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="prompt"/>
</OutputClaims>
</TechnicalProfile>
ClaimsTransformations索赔转换
<ClaimsTransformation Id="AssignedAccessFlowValue" TransformationMethod="FormatStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="isAccessFlow" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormat" DataType="string" Value="{0}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isAccessFlow" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
<ClaimsTransformation Id="ChangeToLower" TransformationMethod="ChangeCase">
<InputClaims>
<InputClaim ClaimTypeReferenceId="isAccessFlow" TransformationClaimType="inputClaim1" />
</InputClaims>
<InputParameters>
<InputParameter Id="toCase" DataType="string" Value="LOWER" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isAccessFlow" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
<ClaimsTransformation Id="AssignedDefaultValue" TransformationMethod="CreateStringClaim">
<InputParameters>
<InputParameter Id="value" DataType="string" Value="select_account" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="prompt" TransformationClaimType="createdClaim" />
</OutputClaims>
</ClaimsTransformation>
User Journey用户旅程
<UserJourney Id="PromptCheck">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AccessFlow" TechnicalProfileReferenceId="ParseAccessFlow" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimEquals" ExecuteActionsIf="true">
<Value>isAccessFlow</Value>
<Value>true</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="Assigned" TechnicalProfileReferenceId="PromptFlow" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.