我尝试传递email
声明,就像我已将其他声明传递给注册政策,但它没有成功。我不得不将其添加为我的技术资料的<InputClaim>
,但我不明白为什么。
在下面的示例中,我传递了email
和extension_MyCustomClaim
。我没有显示extension_MyCustomClaim
,但值仍然存在。
我的叶子政策
<TrustFrameworkPolicy ...>
...
<RelyingParty>
<DefaultUserJourney ReferenceId="MyUserJourney" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<InputTokenFormat>JWT</InputTokenFormat>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_MyClientSecret" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_MyCustomClaim" />
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
...
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
我的用户旅程
<UserJourney Id="MyUserJourney">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange" ContentDefinitionReferenceId="api.signup-ext">
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSignUp" TechnicalProfileReferenceId="LocalAccountSignUp" />
</ClaimsExchanges>
</OrchestrationStep>
...
</OrchestrationSteps>
</UserJourney>
我的技术资料
<TechnicalProfile Id="LocalAccountSignUp">
<DisplayName>User ID signup with input claims</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
...
</Metadata>
<CryptographicKeys>
...
</CryptographicKeys>
<InputClaims>
<!-- why do I have to specify this here? -->
<!-- The other claim like extension_MyCustomClaim are -->
<!-- not specified here but are being persisted -->
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<OutputClaims>
<!-- uncommenting this claim will put it on the screen. used for debugging -->
<!-- <OutputClaim ClaimTypeReferenceId="extension_MyCustomClaim" /> -->
</OutputClaims>
...
</TechnicalProfile>
如果我将extension_MyCustomClaim
添加为<OutputClaim>
,则会在屏幕上显示已填充的值。我不必将其添加为<InputClaim>
。
我不理解这里的不一致。
更新
我错了......
如果我将
extension_MyCustomClaim
添加为<OutputClaim>
,则会在屏幕上显示已填充的值。我不必将其添加为<InputClaim>
。
不是真的。索赔将显示在屏幕上,但值不 已填充。
答案 0 :(得分:1)
对于“自我声明”的技术配置文件,声明<InputClaims />
可以将值传递到UI表单。
例如:
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" Required="true" />
</OutputClaims>
这声明了一个绑定到email
声明的表单字段。传入默认值或原始值(由<InputClaim />
定义),并传递修改或提交的值(由<OutputClaim />
定义)。