Asp.net web api 在Azure AD中配置应用程序权限 背景

Asp.net web api 在Azure AD中配置应用程序权限 背景,asp.net-web-api,oauth-2.0,azure-active-directory,katana,Asp.net Web Api,Oauth 2.0,Azure Active Directory,Katana,我在Azure AD中注册了一个Web API,并使用WindowsAzureActiveDirectoryBeareAuthentication(OAuth2承载令牌)进行保护。这是一个B2B类型的场景,其中没有交互用户-调用API的应用程序是类似后台程序的后台应用程序。因此,我不需要任何同意体验——我只希望受信任的应用程序能够调用API,而其他应用程序——即使它们提供了有效的OAuth令牌——也被拒绝 我试过的 似乎几乎准确地描述了我的情景。但是,它确定调用方是否是受信任的应用程序的方法是将

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

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

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

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

我可以通过应用程序清单创建权限。不幸的是,我不知道如何指定它是应用程序权限,而不是委托权限!我尝试将
类型
从用户更改为管理员,如上所述,但似乎没有效果

"oauth2Permissions": [
{
  ...
  "type": "Admin",
  ...
}
问题:
应用程序权限是我的方案的最佳解决方案,这一点是否正确?如果是,我如何配置它?或者,正如我所担心的,这是路线图上的另一个特性吗™ 但当前不起作用?

Ben,应用程序权限在清单的Approvles部分声明。事实上,如果您在资源应用程序(storage broker demo)清单中声明一个名为say'trusted'的许可证,它将显示在下面的应用程序权限下拉列表中。然后,当您将该应用程序权限分配给客户端应用程序时,客户端应用程序将使用客户端凭据接收的访问令牌OAuth流将包含一个值为“trusted”的角色声明。租户中的其他应用也将能够为您的资源应用获取访问令牌,但它们不会具有“受信任”角色声明。有关详细信息,请参阅此博客文章:

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

希望这有帮助


注:如果您被卡住了,请随时在

的联系页面上点击我,谢谢您的快速回复。我想这正是我想要的。我明天会试一试。那么,用
Type:Admin
定义
oauth2Permission
是否意味着它仍然是一个委托权限,但由管理员而不是每个用户同意一次?在这种情况下,管理员如何确切地同意?我想看看作为一名管理员,我在哪里可以点击“同意”按钮。任何指针都会被通知。@TheAssetor你知道管理员是如何同意的吗?谢谢:-)@Joon我完全放弃了,我想在我寻找的时候,可能是技术上的差距或者是大脑上的差距。现在我放弃了它,转而使用本地身份验证服务。但其他需要关注的服务包括auth0,它看起来相当不错——虽然有点贵。