我有一个索赔转换如下:
<ClaimsTransformation Id="FormatRedirectUri" TransformationMethod="StringReplace">
<InputClaims>
<InputClaim ClaimTypeReferenceId="redirectUri" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="oldValue" DataType="string" Value="/" />
<InputParameter Id="newValue" DataType="string" Value="\" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="updatedRedirectUri" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
现在,为了在另一个技术概要文件中使用这个声明转换作为输入转换,我这样使用它:
<TechnicalProfile Id="P1">
<DisplayName>---</DisplayName>
<Protocol
Name="Proprietary"
Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
/>
<Metadata>
<Item Key="ServiceUrl">---</Item>
<Item Key="AuthenticationType">Bearer</Item>
<Item Key="UseClaimAsBearerToken">bearerToken</Item>
<Item Key="SendClaimsIn">Body</Item>
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="FormatRedirectUri"/>
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="redirectUri" DefaultValue="{OIDC:RedirectUri}" AlwaysUseDefaultValue="true"/>
</InputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
我正在使用OpenIdConnect协议中的声明解析器,该协议位于用户jouerney中的P1技术配置文件之上。但由于某种原因,我从b2c得到一个错误,
找不到ID为“redirectUri”的ClaimType的声明,这是策略中ID为“Microsoft.Cpim.Data.Transformations.StringReplaceTransformation”的ClaimsTransformationImpl所需的,用于策略中ID为“RedirectUri”的ClaimsTransformation引用的TransformationMethod“StringReplace”
知道为什么吗
1条答案
按热度按时间bjg7j2ky1#
您的声明转换和技术配置文件都引用了一个名为
redirectUri
的声明,该错误表明您没有在自定义策略中定义具有该名称的ClaimType
。举例来说:
在任何地方都可以使用它之前,您必须使用define a claim,即使它只在自定义策略内部使用以传递数据。
我也不确定技术侧写是否会如你所愿。
我认为您希望它用传入请求的
redirect_uri
填充redirectUri
,然后用\
替换/
字符,然后将修改后的redirectUri
传递给您的API?由于order in which a technical profile executes,我认为转换将首先替换
redirectUri
中的字符,* 然后 * 将其设置为传入请求的redirect_uri
。你可能需要做的是有一个claims transformation technical profile,它将
redirectUri
设置为OutputClaim
,并将索赔转换作为OutputClaimsTransformation
运行:然后,您可以在调用API之前将其作为一个编排步骤执行:
这应该能让事情按正确的顺序进行。
要做到这一点,您还需要确保您的API技术配置文件使用转换后的声明类型(
updatedRedirectUri
):