gpt4 book ai didi

asp.net-web-api - 在 Azure AD 中配置应用程序权限

转载 作者:行者123 更新时间:2023-12-01 12:37:58 25 4
gpt4 key购买 nike

背景

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

我尝试过的

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

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

从门户网站上看,这似乎是应用程序权限的目的: permissions

我可以通过应用程序 list 创建权限。不幸的是,我不知道如何指定它是应用程序权限,而不是委托(delegate)权限!我尝试将 type 从 User 更改为 Admin,如 MSDN 中所述, 但这似乎没有效果。

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

问题

我是否正确认为应用程序权限是适合我的场景的最佳解决方案?如果是这样,我该如何配置它?或者,正如我担心的那样,这是路线图上的另一个功能™但目前没有功能吗?

最佳答案

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

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

希望这对您有所帮助。

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

关于asp.net-web-api - 在 Azure AD 中配置应用程序权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com