【发布时间】:2021-04-04 02:33:45
【问题描述】:
我想从 id_token 中获取身份验证方法参考(amr 声明)值。我正在考虑将其保存为会话中的 PersistedClaim。
子:xxxxxxxx …… amr : {pwd, swk, mfa} idp : yyyyyyyy
因为此声明包含在 ID 令牌中,而不是从 userinfo 端点收集的数据中,所以我不确定 OIDC 是否可以这样做。
我已尝试添加 amr 声明类型:
<ClaimType Id="amr">
<DisplayName>Authentication Method Reference</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OAuth2" PartnerClaimType="amr" />
</DefaultPartnerClaimTypes>
<UserHelpText>rfc8176</UserHelpText>
</ClaimType>
和一个 OutputClaim:
<OutputClaim ClaimTypeReferenceId="amr" PartnerClaimType="amr" />
但这并没有返回相当不透明的内容:“AADB2C:发生异常。”
-
这种从 id_token 中捕获的声明是否可能?
-
如果是这样,我该如何挖掘这个“AADB2C:发生异常。”?
【问题讨论】:
-
该声明是关于令牌(会话)的信息,而不是用户个人资料数据的一部分。这就是为什么您没有通过 UserInfo 端点获得它的原因。为什么不直接从令牌中读取呢?请记住,JWT 只是 base-64 编码的。
-
我喜欢这种方法,但我找不到这样的例子。我知道如何解码令牌,但我不知道在使用 OIDC 提供程序时如何获取 id_token。你能给我举个例子吗?
-
让我稍微了解一下上下文。用户通过身份验证后你会得到什么?您如何在没有令牌(id_token 或 access_token)的情况下访问用户信息端点?你应该已经有一个令牌
-
Azure B2C 调用 Okta 使用 OpenIdConnect 进行身份验证(不是 OAuth2)。我看不到在哪里可以获得 id_token。我只得到输出声明(来自 OIDC 用户信息)。 ```
- xyz.okta.com/.well-known/openid-configuration</Item>
- 代码
- form_post
- openid profile email
``` - xyz.okta.com/.well-known/openid-configuration</Item>
标签: azure-ad-b2c