当前位置: 首页 > 知识库问答 >
问题:

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

弘涛
2023-03-14

我为什么要这样?

我试图从我的用户那里获得一个唯一的标识符,我可以连接到数据库记录。我不想使用电子邮件作为标识符有很多原因。我读到B2C不支持子声明,并在其位置上使用OID。

我采取的步骤

因此,我设置了两个策略在Azure B2C上返回对象ID:

我目前正在使用单独的登录和注册策略,我可以获得所有的索赔,包括我指定要返回的电子邮件索赔。然而,我找不到与OID或SUB相关的索赔。

User.Claims 

给我带来了以下结果:

我找到的唯一希望的面包屑是这样的主张:

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

值:当前不支持。使用oid声明。

问题

我是否错过了您需要执行的一些额外步骤来检索此特定索赔?

是否有人成功地从Azure B2C检索OID或SUB?

共有3个答案

乜思淼
2023-03-14

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

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();
}

希望这能帮助其他人。。。

严修谨
2023-03-14

我为此挣扎了一会儿,这篇文章帮助了我。

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

User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value

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

翟承志
2023-03-14

好吧,这太尴尬了,我一定已经看了这行大约30遍了,但没有注意到。。。

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

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

从我提供的截图中可以清楚地看到。我将把这个问题留给大家,因为这个模式可能会把其他人甩了。

 类似资料:
  • 谢谢你的关注,也很抱歉我的英语不好。 我正在从中获取htmlhttp://flvxz.com/当我在输入框中输入一些单词并单击时。就像: 加载雅虎主页 搜索"某物"(输入某物词并单击按钮) 获取返回html MyWebsit通过javaScrip返回消息 这是我的密码 那么,我怎样才能得到新的html呢?我尝试如下,不工作。 我的问题: 如何获取html 非常感谢你,我正在提高我的英语。。。

  • 我有这样的vuex商店,我想把它发送到后endpoint击。 在vue组件中,我有以下方法: 这是我非常简单的Laravel控制器:

  • 问题内容: 在一个Node.js项目中,我试图从S3取回数据。 当我使用时,一切正常: 我的参数是: 如果将URL输出带到控制台并将其粘贴到Web浏览器中,它将下载所需的文件。 但是,如果我尝试使用,则会出现各种奇怪的行为。我相信我只是使用不正确。这是我尝试过的: 输出: 因此看来这工作正常。但是,当我在s 之一上设置断点时,我的IDE(NetBeans)会引发错误并拒绝显示数据值。尽管这可能只是

  • 问题内容: 我在Netbeans中有一个小型Java测试应用程序,该类从中读取输入。如何打开可在其中输入输入的窗口?(我在Windows 7上使用NB 6.7.1)。 问题答案: 可能并不明显,但是在Netbeans中,如果您的主线程正在等待输入,则底部的“输出”选项卡也会接受输入。只需在最后一个输出行下键入,然后按Enter。换句话说,“输出”选项卡与控制台窗口相同。

  • 获取“所有”AVSpeechSynthesisVoice对象列表的标准方法是请求: 但是,这仅显示每个语言区域对的唯一默认语音。e、 g.对于美国: 如果我看在设置应用程序下的一般→辅助功能→语音→语音→英语我看到我有'Siri女性(增强)'选择,但该语音是不可选的代码。完整的名单是 所以最大的问题是:如何从代码中选择Alex或Siri女性作为语音?

  • 问题内容: 我在一个学校项目中使用pyaudio,试图将声音一次只在一个扬声器上播放。我的代码是这样的: 在这里wavefunc只会生成一个wave。 有人知道该怎么办吗? 问题答案: 现在,您正在使用,即单声道音频流。您需要使用两个声道进行立体声,并分别为左右声道生成数据。 这是有关如何创建立体声数据的简短教程。