【发布时间】:2016-07-29 00:00:44
【问题描述】:
知道是什么原因造成的吗?我可以在 User.Claims 中看到声明 我能想到的唯一一件事是来自 Azure Ad Roles 的声明与 IsInRole() 检查的声明不同?
CorpAdmin Role showing in claims.
[Startup.Auth][3]
澄清一下,我正在恢复角色,但我认为它们没有正确添加到声明列表中,我无法弄清楚原因。 Nerith IsInRole 或 [Authorize(Roles="...")] 将正确检查角色声明。
【问题讨论】:
-
Joshua 您是否手动创建了该声明?通常角色的声明类型是schemas.microsoft.com/ws/2008/06/identity/claims/role 而不是“角色”这可能是 User.IsInRole 找不到它的原因。 msdn.microsoft.com/en-us/library/…
-
不,这是从 Azure Ad 创建和返回的。让我怀疑这是否是一个错误?
-
通常 JwtSecurityTokenHandler.ValidateToken(...) 将类型为“roles”的声明映射到“.../claims/role”,因此 IsInRole 将起作用。您如何从 JWT 创建 ClaimsPrincipal?
-
@JoshuaHolden 您在使用 MVC 应用程序吗?您是在谈论 azure 应用程序角色还是 azure 广告组?
-
你看这个答案stackoverflow.com/a/30098192/4167200了吗?
标签: c# azure roles azure-active-directory