如何从Azure B2C获取ASPCore中的OID声明?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (59)

我为什么要这个?

我正在尝试从我的用户那里获取一个唯一的标识符,我可以将其连接到数据库记录。有理由我不想使用电子邮件作为标识符。我读到B2C不支持SUB声明,并在其中使用OID。

我采取的步骤

所以,我已经设置我的两个策略都返回Azure B2C上的对象ID:

我目前正在使用单独的SignIn和SignUp政策,我收到所有索赔,包括我指定要退回的电子邮件索赔。但我无法找到与OID或SUB相关的声明。

User.Claims 

让我得到以下结果:

问题

我是否错过了为检索此特定声明而需要执行的其他步骤?

有没有人有成功从Azure B2C检索OID或SUB?

提问于
用户回答回答于

由于上面的链接被破坏了,这是我很难找到的一个工作示例,下面是我最后使用的代码片段;

using System.IdentityModel.Tokens.Jwt;
...
string oid;
string pTokenInput = Request.Headers["x-ms-token-aad-id-token"].ToString();
var lJWTHandler = new JwtSecurityTokenHandler();
if (lJWTHandler.CanReadToken(pTokenInput)
{
    var lToken = lJWTHandler.ReadJwtToken(pTokenInput);
    if (lToken.Payload.ContainsKey("oid"))
        oid = lToken.Payload["oid"].ToString();
}

希望这能帮到别人.。

扫码关注云+社区

领取腾讯云代金券