【问题标题】:Configure Application Permissions in Azure AD在 Azure AD 中配置应用程序权限
【发布时间】:2015-03-07 06:59:42
【问题描述】:

背景

我在 Azure AD 中注册了一个 Web API,并使用 WindowsAzureActiveDirectoryBearerAuthentication(OAuth2 持有者令牌)进行保护。这是一个 B2B 类型的场景,其中没有交互式用户 - 调用 API 的应用程序是类似守护进程的后台应用程序。因此,我不需要任何同意经验 - 我只希望受信任的应用程序能够调用 API,而其他应用程序 - 即使它们提供有效的 OAuth 令牌 - 也会被拒绝。

我尝试过的

This sample 似乎几乎完全准确地描述了我的情况。但是,它确定调用者是否是受信任的应用程序的方法是将调用者通过声明提供的 clientID 与硬编码值进行比较。显然,您可以在外部存储受信任的客户端 ID 列表而不是硬编码,但似乎我应该能够通过 AAD 门户中的配置来完成此操作,以便 a)我不必维护客户端 ID 列表,并且 b)我不必编写自己的授权逻辑。

似乎我应该能够为我的 API 定义一个权限,将该权限授予 AAD 中的每个调用应用程序(或一次性管理员同意),然后在我的 API 中检查该权限是否存在在scp 声明中。

从门户网站看来,应用程序权限的用途似乎是:

我可以通过应用程序清单创建一个权限。不幸的是,我不知道如何指定它是应用程序权限,而不是委托权限!我尝试按照MSDN 中的说明将type 从用户更改为管理员,但这似乎没有效果。

"oauth2Permissions": [
{
  ...
  "type": "Admin",
  ...
}

问题

我是否正确,应用程序权限是我的方案的最佳解决方案?如果是这样,我该如何配置它?或者,正如我所担心的,这是 On The Roadmap™ 中的另一个功能,但目前还没有功能?

【问题讨论】:

    标签: asp.net-web-api oauth-2.0 azure-active-directory katana


    【解决方案1】:

    Ben,应用程序权限在清单的 appRoles 部分中声明。事实上,如果您在资源应用程序的(存储代理演示)清单中声明一个名为 say 'trusted' 的 appRole - 它会显示在应用程序权限下拉列表中。然后,当您将该应用程序权限分配给客户端应用程序时 - 客户端应用程序将使用客户端凭据 OAuth 流接收的访问令牌将包含一个角色声明,其值为“受信任”。租户中的其他应用程序也将能够为您的资源应用程序获取访问令牌 - 但它们不会拥有“受信任”角色声明。详情见此博文:http://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/

    最后,上述将应用程序权限分配给客户端应用程序的方法仅在资源和客户端应用程序都在同一目录中声明时才有效 - 但是如果这些应用程序是多租户并且客户将单独安装这些应用程序 -客户目录中的全局管理员需要同意客户端应用程序 - 这将导致应用程序权限分配给客户租户中的客户端应用程序实例。 (我的博文也涵盖了这一点)

    希望这会有所帮助。

    ps:如果您遇到困难,请随时在http://www.dushyantgill.com/blog 的联系页面上联系我

    【讨论】:

    • 感谢您的快速回复。我想这正是我想要的。我明天试一试。
    • 那么用Type: Admin 定义oauth2Permission 是否意味着它仍然是一个委派的权限,但由管理员而不是每个用户同意一次?
    • 在这种情况下,管理员究竟是如何同意的?我想看看作为管理员我可以在哪里点击“同意”按钮。任何指针都会被应用。
    • @TheSenator 你有没有弄清楚管理员是如何同意的?谢谢:-)
    • @Joon 我完全放弃了这个,我想我在看的时候可能存在技术差距或大脑差距。现在我已经放弃它以支持本地身份验证服务。但其他值得关注的服务包括 auth0,他们看起来相当不错——如果有点贵的话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多