[英]How can I get roles from AD with MVC Azure AD Authentication?
我设置和MVC 4应用程序并添加了对我们的Azure AD服务器的身份验证,如下所述: http : //msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspx
身份验证按预期工作。 但是,我没有默认任何角色。 应该创建几个AD组,我想使用它们通过MVC中的[Authorize]属性来限制应用程序。
我真的找不到一个好的地方,甚至开始搞清楚这一点。 任何人都可以给我一个大纲或指向我一个很好的教程吗?
我应该提一下,我不是Azure帐户的管理员,因此如果需要进行任何设置,我需要告诉管理员该怎么做。
首先,Azure AD返回的令牌当前不包含角色或组的声明,因此您需要从Graph API获取它们。 其次,Graph API返回的Azure AD中的角色不一定用于ISV / LoB应用程序,通常您应该使用安全组进行授权。 要执行授权,您应该使用Graph API中的checkMemberGroups或getMemberGroups操作,这些操作是可传递的并且对此有效。
如果您按顺序查看以下资源,我认为您的问题将得到解答。 您将学习如何对Graph进行身份验证,调用它,以及如何配置应用程序以使用组操作的结果来执行授权:
肖恩的回答有点过时了。 您现在可以配置Azure AD,因此它将在JWT令牌中包含组或角色,因此它将包含在ClaimsPrincipal.Current.Claims
因此标准[Authorize(Roles = "yourRoleName")]
属性将起作用。
这是介绍帖。 这基本上说你有两个选择:
使用组声明 - 您需要在应用清单中更改groupMembershipClaims
值,稍后在应用程序中可以检查ClaimsPrincipal.Current.FindFirst("groups").Value
以查看用户是哪个组(您只获取组ID)。 您可以编写自己的使用此属性的Authorize属性。 更多信息
为您的应用程序定义角色,然后使用普通代码测试用户是否在角色中:
[PrincipalPermission(SecurityAction.Demand, Role = “yourRoleName”)]
[Authorize(Roles = “yourRoleName”)]
if (ClaimsPrincipal.Current.IsInRole(“yourRoleName”)) { //do something }
真正奇怪的是,您无法从Azure网页分配多个角色。 你需要使用azure graph api 。
如果在Azure门户中看不到“ Users and Groups
选项卡,则可能需要Azure AD Basic或Premium版本。 如果您正在开发免费的azure订阅,则可以使用免费的Azure AD Premium试用版来测试内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.