【发布时间】: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