【问题标题】:Azure Mobile App Service - Cordova, with C# backend, using Azure AD. How to check roles?Azure 移动应用服务 - Cordova,带有 C# 后端,使用 Azure AD。如何检查角色?
【发布时间】:2016-05-03 04:51:38
【问题描述】:

我已使 Azure 身份验证正常工作,并且可以使用 [Authorize] 属性 like in the documentation 限制对控制器的访问。到目前为止,我喜欢它。

但是,我将需要一些具有提升权限的用户,我们通常会使用 AD 安全组。 “太好了!”,我想,“我就用[Authorize(Roles = "AD Security Group"]”然后我就可以重新开始开发应用程序了!

好吧,我错了。两天后,我刚刚转了一圈。我得出的结论是 AAD 没有提供角色声明,因此 ClaimsPrincipal 不包含角色,因此无法向授权属性提供信息。

我看到了很多关于这方面的旧信息(Azure 移动应用程序是相当新的),而且它使水变得相当混乱。当前的解决方案是查询 AD Graph API 以获取角色信息吗?

或者,也许,编写一个自定义属性来调用/.auth/me 端点来获取角色信息?

我很困惑!有人能指出我正确的方向吗?

【问题讨论】:

    标签: azure-web-app-service azure-mobile-services


    【解决方案1】:

    您需要做一些工作才能让 AAD 组加入声明。我wrote a blog 关于这个。虽然在Node中实现了授权,但是AAD端的配置是一样的。

    在将其放入授权角色方面,Azure 移动应用服务器 SDK 目前不会为您执行此操作。 (我认为这是个好主意,所以请随时在our GitHub repository 上提出问题)

    如果您自己编写属性,我会使用 GetAppServiceIdentityAsync<>() 方法来获取声明 - 不要自己查询 /.auth/me。

    【讨论】:

    • 嗨阿德里安!我在 Azure 移动应用程序中看到了你的名字。我真的很感谢你的回复。首先,它为我提供了一些方向和更多信息。它还验证了我实际上可能至少对自己在做什么有一点点想法!
    • 尤其是,您的回复让我更加努力地解决了我在使用 GetAppServiceIdentityAsync&lt;&gt;() 时遇到的问题。我必须添加一个using System.Security.Principal,以便扩展方法在 IPrincipal 上可用。所以这是一个很大的进步。我想在文档中为这种效果提供一个注释——它们在 GitHub 上,不是吗?我现在找不到他们了。可以告诉我网址吗?
    • 使用 azure/azure-mobile-apps-net-server - 我们应该接受 wiki 的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多