【问题标题】:How can I get roles from AD with MVC Azure AD Authentication?如何使用 MVC Azure AD 身份验证从 AD 获取角色?
【发布时间】:2013-08-30 20:42:34
【问题描述】:

我设置和 MVC 4 应用程序并添加了针对我们的 Azure AD 服务器的身份验证,如下所述:http://msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspx

身份验证按预期工作。但是,默认情况下我没有获得任何角色。应该创建了几个 AD 组,我想通过 MVC 中的 [Authorize] 属性使用它们来对应用程序进行角色限制。

我真的找不到一个好地方来解决这个问题。谁能给我一个大纲或指出一个好的教程?

我应该提一下,我不是我们 Azure 帐户的管理员,所以我需要能够告诉我们的管理员如果需要在该端进行任何设置时该怎么做。

【问题讨论】:

    标签: asp.net-mvc azure active-directory


    【解决方案1】:

    首先,Azure AD 返回的令牌当前不包含角色或组的声明,因此您需要从 Graph API 获取它们。其次,由 Graph API 返回的 Azure AD 中的角色不一定适用于 ISV/LoB 应用程序,通常应该使用安全组进行授权。要执行授权,您应该使用 Graph API 中的 checkMemberGroups 或 getMemberGroups 操作,它们是可传递且有效的。

    如果您按顺序查看以下资源,我认为您的问题将得到解答。您将学习如何对 Graph 进行身份验证、调用它以及配置您的应用程序以使用组操作的结果来执行授权:

    【讨论】:

      【解决方案2】:

      肖恩的回答有点过时了。您现在可以配置 Azure AD,使其在 JWT 令牌中包含组或角色,从而将其包含在 ClaimsPrincipal.Current.Claims 中,因此标准的 [Authorize(Roles = "yourRoleName")] 属性将起作用。

      Here 是介绍帖。这基本上说你有两个选择:

      1. 使用组声明 - 您需要在应用程序清单中更改 groupMembershipClaims 值,稍后在应用程序中您可以检查 ClaimsPrincipal.Current.FindFirst("groups").Value 以查看用户在哪个组中(您只能获得组 ID)。您可以编写自己的 Authorize 属性来使用它。 more info

      2. 为您的应用程序定义角色,然后使用普通代码测试用户是否在角色中:

        [PrincipalPermission(SecurityAction.Demand, Role = “yourRoleName”)]

        [Authorize(Roles = “yourRoleName”)]

        if (ClaimsPrincipal.Current.IsInRole(“yourRoleName”)) { //do something }

        您需要在应用的清单中编辑角色。 更多信息 herehere。需要在 manifest 中设置的值在here

        中描述

      真正奇怪的是,您不能从 Azure 网页为组分配多个角色。为此,您需要使用 azure graph api

      如果您在 Azure 门户中看不到 Users and Groups 选项卡,您可能需要 Azure AD 基本版或高级版。如果您正在免费订阅 azure,您可以使用 free Azure AD Premium trial 进行测试。

      【讨论】:

      • #Marisuz 我有两个应用程序都从同一个 Azure AD 进行身份验证,并且都具有不同的角色。如果在第一个应用程序中登录,则令牌返回第一个应用程序的角色,但是当在下一个选项卡中打开秒应用程序时它声称第一个应用程序的角色。
      • 第 1 号的链接是 404 not found :(
      猜你喜欢
      • 2013-10-17
      • 2019-06-25
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 2014-06-09
      • 2016-07-08
      • 1970-01-01
      • 2020-08-26
      相关资源
      最近更新 更多