从Azure获取用户角色

时间:2018-02-21 06:54:13

标签: azure authentication azure-active-directory

我创建了一个简单的Asp.net Web应用程序项目,并使用Azure Web App服务在Azure上发布,我也设置了身份验证,但我是从Azure完成的。在Azure Web应用程序中,您可以选择使用azure Ad。

设置身份验证

在我的应用程序中,我只是给了一个带有链接mydomain / .auth / logout的注销按钮,它运行正常。在我的应用程序中,没有任何身份验证的代码。

我是否可以通过该方式获取用户的角色(我在我的azure app注册清单中设置了2个角色,并且还将这些角色分配给用户),这些角色登录在我的应用中。我搜索过但我无法找到它。当我通过代码使用owin和open-id-connect设置身份验证过程时,我能够做到这一点,但我不想这样做。有没有办法,我可以在我的应用程序中编写身份验证代码?

1 个答案:

答案 0 :(得分:0)

嗯,我认为有两种方法可以获得登录用户的角色但是我不确定它们是否可以在你的场景中使用。

  1. 正如juunas所说,您可以从id_token获取信息。我测试它,你可以解码id_token并获得角色:
  2. enter image description here

    1. 如果您知道该用户的主要显示名称,您可以通过AAD Powershell获取该角色,这是我的脚本和结果:
    2. 
      
      Get-AzureADServicePrincipal -ObjectId "<the ObjectId of that SP>"| % {    
            $appRoles = @{ "$([Guid]::Empty.ToString())" = "(default)" }
            $_.AppRoles | % { $appRoles[$_.Id] = $_.DisplayName }
            Get-AzureADServiceAppRoleAssignment -ObjectId ($_.ObjectId) | Select ResourceDisplayName, PrincipalDisplayName,  Id | Where-Object {$_.PrincipalDisplayName -eq "yangsa666@outlook.com" } | % {  $_ | Add-Member "AppRoleDisplayName" $appRoles[$_.Id] -Passthru
            }
          }
      &#13;
      &#13;
      &#13;

      enter image description here

      希望这有帮助!