小编Tho*_*urg的帖子

Azure B2C:如何在JWT令牌中获得"组"声明

在Azure B2C中,我曾经通过使用JWT 检索Azure AD组信息,在我的JWT令牌中获得"组"声明:

  • 打开老派Azure管理员(https://manage.windowsazure.com)
  • 在B2C注册我的申请
  • 下载应用程序的B2C清单
  • 在清单中,将"groupMembershipClaims"条目更改为

    "groupMembershipClaims":"SecurityGroup",

  • 再次上传更改的B2C清单

问题

这在过去一直运作良好(大约一个月前,我相信......)但它已不复存在了.详见下文......

我尝试过的是什么

计划A:使用Azure管理器

按照上面已知的好食谱.

不幸的是,这不再起作用 - 当此客户端尝试使用B2C验证我时出现以下错误:

AADB2C90068:提供的ID为"032fe196-e17d-4287-9cfd-25386d49c0d5"的应用程序对此服务无效.请使用通过B2C门户创建的应用程序,然后重试"

好吧,公平 - 他们正在把我们带到新门户网站.

计划B:使用Azure门户

使用新的Portal,按照好的旧配方.

但这也不起作用 - 当我到达"下载清单"部分时,我找不到任何方法来访问清单(并且谷歌搜索告诉我它可能已经好了......).

计划C:混合Azure门户和经理

有点绝望,我尝试混合计划A和B:使用新的Portal注册应用程序,然后使用旧的Azure Manager更改清单.

但没有运气 - 当我尝试上传清单时,它会失败并显示消息

ParameterValidationException =提供的参数无效; BadRequestException =此版本不允许对聚合应用程序进行更新.

计划Z:使用Graph API检索组成员资格数据

只需放弃"组"声明 - 相反,每当我需要组信息时,只需使用Graph API查询B2C服务器.

我真的,真的不想这样做 - 它会破坏访问令牌的自包含性,并使系统非常"健谈".

但是我把它作为Z计划包括在内,只是说:是的,我知道选项存在,不,我没有尝试过 - 而且我不愿意.

问题:

如何在我的JWT令牌中获得"团体"声明这些天?

azure jwt azure-ad-b2c

17
推荐指数
1
解决办法
3921
查看次数

我可以使用Azure B2C来获取ID令牌*和*获取针对Azure部署的服务的访问令牌吗?

我只能弄清楚如何使用B2C获取ID令牌-但随后我失去了常规AAD应用程序的所有好处(特别是访问令牌,范围和用户同意)

下面,我将描述一个简化的方案以及我尝试过的方案。

情境

想象一下,我正在开发一个客户端(javascript SPA)和两个服务(WebAPI):

在此处输入图片说明

  • A是基于WebAPI的服务,具有两个范围(ReadA和WriteA),已在Azure中注册和托管
  • B是另一种基于WebAPI的服务,具有两个范围(ReadB和WriteB),已在Azure中注册和托管
  • C是Javascript SPA

现在,我希望用户使用Azure B2C登录,这种方式可以使我的客户端C产生以下令牌:

  • 一个id令牌,因此客户端C可以按名称向我寻址
  • 一个访问令牌具有范围ReadA和WriteA的服务A(在通常的用户同意之后发布)
  • 具有范围ReadB的服务B 的访问令牌(在通常的用户同意之后发布)

能做到吗?如何?有任何例子吗?

我已经找到的所有示例都显示了一个客户端对用户进行身份验证,还有一些示例显示了如何获取单个访问令牌(不支持范围)

我尝试过的沙发

我的实验者已经使用

为避免与客户端库有关的混乱,下面将根据Fiddler的报告,以发送和接收的请求和响应来描述我的实验。

单个客户端-仅ID令牌

这是基准方案,由我发现的大多数使用方法展示。

客户端C向B2C发送以下请求:

https://login.microsoftonline.com/fooplanner.onmicrosoft.com/oauth2/v2.0/authorize?
   p=b2c_1_fooplanner-signuporsignin&
   client_id=ffffffff-ffff-ffff-ffff-ffffffffffff&
   response_type=id_token&
   scope=openid email profile
Run Code Online (Sandbox Code Playgroud)

在提示我输入我的凭据后,B2C然后最终返回一个id_tokenuuu...B2C中我的用户条目的GUID):

id-token:
{
  "ver": "1.0",
  "iss": "https://login.microsoftonline.com/08de3e5f-6a10-4d7c-a0e3-fc4a627a712b/v2.0/",
  "sub": "uuuuuuuu-uuuu-uuuu-uuuu-uuuuuuuuuuuu",
  "aud": "ffffffff-ffff-ffff-ffff-ffffffffffff",
  "oid": …
Run Code Online (Sandbox Code Playgroud)

openid azure adal openid-connect azure-ad-b2c

5
推荐指数
1
解决办法
1787
查看次数

标签 统计

azure ×2

azure-ad-b2c ×2

adal ×1

jwt ×1

openid ×1

openid-connect ×1