首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Azure B2C获取ASPCore中的OID声明

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

Stack Overflow用户
提问于 2016-08-16 23:05:29
回答 4查看 6K关注 0票数 11

我为什么想要这个?

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

我已经采取的步骤

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

我目前使用的是单独的SignIn和SignUp保单,我得到了所有的索赔,包括我指定的我想要退还的电子邮件索赔。然而,我找不到与OID或SUB相关的索赔。

代码语言:javascript
复制
User.Claims 

我得到了以下结果:

我找到的唯一的希望就是这样的说法:

类型:http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier

值:暂时不支持。使用旧声明。

问题

我是否遗漏了检索此特定申请所需执行的其他步骤?

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-16 23:22:46

嗯,这太尴尬了,我肯定已经看了这行大约30次了,都没有注意到……

我正在检索OID令牌,它的声明类型是:

http://schemas.microsoft.com/identity/claims/objectidentifier

在我提供的截图中可以清楚地看到。我将把这个问题留下来,因为模式可能会让其他人失去兴趣。

票数 19
EN

Stack Overflow用户

发布于 2019-08-14 03:06:35

我在这一点上挣扎了一段时间,这篇文章帮助了我。

为了使用一些代码更新内容,下面将获取对象标识符值(Azure中的唯一用户id )

代码语言:javascript
复制
User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value

感谢您指出模式/类型之间的差异!

票数 5
EN

Stack Overflow用户

发布于 2018-06-23 00:19:31

由于上面的链接被破坏了,这是我努力寻找的工作示例,下面是我最终使用的代码片段;

代码语言:javascript
复制
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();
}

希望这能帮助到其他人。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38978403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档