Dav*_*res 4 claims-based-identity openid-connect azure-ad-b2c asp.net-core
我为什么要这个?
我正在尝试从我的用户那里获取一个唯一的标识符,我可以将其连接到数据库记录.有理由我不想使用电子邮件作为标识符.我读到B2C不支持SUB声明,并在其中使用OID.
我采取的步骤
所以,我已经设置我的两个策略都返回Azure B2C上的对象ID:
我目前正在使用单独的SignIn和SignUp政策,我收到所有索赔,包括我指定要退回的电子邮件索赔.但是,我无法找到与OID或SUB相关的声明.
User.Claims
Run Code Online (Sandbox Code Playgroud)
让我得到以下结果:
我发现的单一面包屑希望就是这种说法:
键入:http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
值:目前不支持.使用oid声明.
问题
我是否错过了为检索此特定声明而需要执行的其他步骤?
有没有人有成功从Azure B2C检索OID或SUB?
M-P*_*ror 16
如果您使用Microsoft.Identity.Web包,现在有一个 ClaimsPrincipalExtensions 类提供扩展方法,以便您可以简单地使用:
// using Microsoft.Identity.Web;
User.GetObjectId();
Run Code Online (Sandbox Code Playgroud)
这使用了oid
orhttp://schemas.microsoft.com/identity/claims/objectidentifier
声明。
嗯,这很尴尬,我必须看过这条线约30次并没有注意到......
我正在检索OID令牌,它的声明类型是:
http://schemas.microsoft.com/identity/claims/objectidentifier
从我提供的截图中可以清楚地看到.我会把这个问题留下来,因为架构可能会让别人失望.
小智 5
我为此挣扎了一段时间,这篇文章帮助了我。
要使用一些代码更新内容,下面将获取对象标识符值(Azure 中的唯一用户 ID)
User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value
Run Code Online (Sandbox Code Playgroud)
感谢您指出架构/类型的差异!
归档时间: |
|
查看次数: |
2165 次 |
最近记录: |