gpt4 book ai didi

Azure B2C `id_token_hint` 和自定义策略

转载 作者:行者123 更新时间:2023-12-03 05:11:50 27 4
gpt4 key购买 nike

在 Azure B2C 中,以编程方式创建用户后,我想通过电子邮件向用户发送一个链接,以便他们可以设置密码。为此,我使用自己的电子邮件提供商,而不是 B2C - 因此我只需要一个可以包含在“欢迎”电子邮件中的 URI。

该链接需要专门针对他们,这样当他们点击该链接时,就不必重新输入电子邮件地址并执行整个电子邮件验证过程。

我正在使用 B2C 自定义策略,根据文档,它应该允许我向名为 id_token_hint 的 URL 添加查询字符串。 。这是一个自签名的 JWT token ,其中包含我想要传递给我的策略的声明(在我的例子中为 email )。

我正在遵循这两个链接的指导/说明:

我正在主持 .well-known我的自签名证书的端点 - 并且可以在测试时看到 B2C 正在调用这两个端点。

我的问题是我无法获得使用我嵌入的电子邮件的策略 id_token_hint JWT token 。

我有一个可以使用它的技术配置文件...

<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName>My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="METADATA">https://<my-domain>/.well-known/openid-configuration</Item>
<Item Key="issuer">https://localhost/</Item>
</Metadata>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
</TechnicalProfile>

我从我的用户旅程中引用了它......

<OrchestrationStep Order="1" Type="GetClaims" CpimIssuerTechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />

引用这样的用户旅程(即使用 CpimIssuerTechnicalProfileReferenceId ),这就是上面文档所说的,不允许我将该电子邮件添加为 <InputClaim>在下一个技术简介中。然后在尝试上传时会出现此验证错误...

“声明类型“电子邮件”是依赖方技术配置文件的输出声明,但它不是用户旅程“DanTest”的任何步骤中的输出声明。”

尽管如此,它 IdTokenHint_ExtractClaims 的输出声明!

如果我将编排步骤更改为如下所示...

<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="IdTokenHint_ExtractClaims" TechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />
</ClaimsExchanges>
</OrchestrationStep>

然后就成功上传了。但是,然后我收到一个运行时错误,说明了这一点...

“已尝试为 ID 为“mytenant.onmicrosoft.com”的租户的 ID 为“B2C_1A_dantest”的策略中 ID 为“IdTokenHint_ExtractClaims”的技术配置文件中不支持的协议(protocol)“None”解析协议(protocol)处理程序。”

我正在努力寻找下一步该尝试什么。你知道我做错了什么吗?

最佳答案

除了指定 ID token 提示技术配置文件之外,您还需要将声明作为输入声明添加到依赖方技术配置文件中:

<RelyingParty>
<DefaultUserJourney ReferenceId="SignUp" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="userId" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>

文档:https://learn.microsoft.com/en-us/azure/active-directory-b2c/id-token-hint#configure-your-policy

关于Azure B2C `id_token_hint` 和自定义策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76395311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com