我实际上正在制作一个网站,在asp.net MVC中,可以使用azure活动目录帐户登录访问。这部分效果很好。但是现在,我想根据登录的人员制作角色,以便他们可以访问不同的内容。
我在我的azure活动目录中为管理员创建了一个组,我尝试了这个解决方案,但它并没有真正起作用:
if (principal.Claims.Any(x => x.Type == "groups" && x.Value == "id of the admin group")){ give admin rights}
有人知道更好的解决方案或我的错误吗?
提前致谢。
答案 0 :(得分:0)
我假设您已经创建了一个正在使用的Azure AD“应用程序”。
诀窍是您需要修改应用程序的“Manifest”以允许您查询组。
门户网站中没有此UI,您只需下载清单,进行更改,然后上传即可。笨拙。
您想要找到键“GroupMembershipClaims”并将其设置为“SecurityGroup”。如果您将其设置为all,那么您也将获得电子邮件组。这里的问题是您获得所有用户组的列表以及这些组所属的所有组。在一家大公司,这可能会很多!
接下来你必须回电才能获得组信息,这意味着获得一个令牌。
如果您在Visual Studio中生成MVC应用程序并告诉它您想要使用Azure AD,那么它会支持大部分管道,但模板中存在错误。当它试图保留令牌时,它将始终检索列表中的第一个标记,而不是最新的。这意味着你的演示今天有效,但明天就失败了......
您可以在ADAL库中搜索信息以获取更多信息。我建议通过Vittorio Bertocci阅读使用Azure Active Directory for Web Applications的现代身份验证,以获得有关它如何工作的真实见解。
答案 1 :(得分:0)
您可以参考一些教程https://azure.microsoft.com/en-us/documentation/articles/role-based-access-control-configure,https://azure.microsoft.com/en-us/documentation/articles/role-based-access-control-manage-access-powershell/,帮助您管理访问权限。
将角色分配给用户/组/ app ...
如果您有任何疑问,请与我们保持联系。