我试图弄清楚如何授权使用Azure Active Directory B2C中的组.我可以通过用户授权,例如:
[Authorize(Users="Bill")]
Run Code Online (Sandbox Code Playgroud)
然而,这不是很有效,我看到很少用例.另一种解决方案是通过角色授权.但是由于某些原因,似乎并没有wowrk.例如,如果我为用户提供"全局管理员"角色,请尝试:
[Authorize(Roles="Global Admin")]
Run Code Online (Sandbox Code Playgroud)
这是行不通的.有没有办法通过群组或角色进行授权?
在Azure B2C中,我曾经通过使用JWT 检索Azure AD组信息,在我的JWT令牌中获得"组"声明:
"groupMembershipClaims":"SecurityGroup",
这在过去一直运作良好(大约一个月前,我相信......)但它已不复存在了.详见下文......
按照上面已知的好食谱.
不幸的是,这不再起作用 - 当此客户端尝试使用B2C验证我时出现以下错误:
AADB2C90068:提供的ID为"032fe196-e17d-4287-9cfd-25386d49c0d5"的应用程序对此服务无效.请使用通过B2C门户创建的应用程序,然后重试"
好吧,公平 - 他们正在把我们带到新门户网站.
使用新的Portal,按照好的旧配方.
但这也不起作用 - 当我到达"下载清单"部分时,我找不到任何方法来访问清单(并且谷歌搜索告诉我它可能已经好了......).
有点绝望,我尝试混合计划A和B:使用新的Portal注册应用程序,然后使用旧的Azure Manager更改清单.
但没有运气 - 当我尝试上传清单时,它会失败并显示消息
ParameterValidationException =提供的参数无效; BadRequestException =此版本不允许对聚合应用程序进行更新.
只需放弃"组"声明 - 相反,每当我需要组信息时,只需使用Graph API查询B2C服务器.
我真的,真的不想这样做 - 它会破坏访问令牌的自包含性,并使系统非常"健谈".
但是我把它作为Z计划包括在内,只是说:是的,我知道选项存在,不,我没有尝试过 - 而且我不愿意.
如何在我的JWT令牌中获得"团体"声明这些天?