如何为Azure应用程序配置同意(AADSTS65005错误)

我们有一个Azure资源应用程序,我们希望公开其API以供Azure上的客户端应用程序访问 . 这两个应用程序位于不同的租户 . 访问API(Office 365帐户持有者)的用户位于不同的租户 .

当我们尝试从客户端应用程序对资源应用程序进行身份验证时,在租户上手动配置服务主体时,整个设置就会起作用 . 我的意思是他们能够使用他们的Office 365帐户登录并显示同意屏幕 .

如果我们没有在尝试进行身份验证的用户的AAD租户上配置服务主体,则会收到以下错误:

AADSTS65005 - The app needs access to a service <service> that your 
organization org.onmicrosoft.com has not subscribed to or enabled. Contact 
your IT Admin to review the configuration of your service subscriptions.

我们不可能在访问我们的应用程序(资源应用程序)的每个租户上配置服务主体 . 我们缺少什么?我们使用正确的流量吗?

回答(1)

2 years ago

您可以在此处找到有关您的方案的帮助:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devhowto-multi-tenant-overview#understanding-user-and-admin-consent . (向下滚动到多个租户中的多个层)

对于由Microsoft以外的组织构建的API,API的开发人员需要为其客户提供一种方式,以便将应用程序同意到其客户的租户中 . 推荐的设计是让第三方开发人员构建API,使其也可以作为Web客户端实现注册:按照前面的部分确保API实现多租户应用程序注册/代码要求除了暴露API的范围/角色,确保注册包括“登录和读取用户配置文件”Azure AD权限(默认情况下提供)按照前面讨论的管理员同意指南,在Web客户端中实施登录/注册页面一旦用户同意该应用程序,就会在其租户中创建服务主体和同意委派链接,并且本机应用程序可以获取API的令牌

基本上,您的应用程序所需的所有部分必须作为服务主体出现在客户的租户中 . 这是AAD的要求 .

发生这种情况的唯一方法是管理员单独同意API和app,因为他们在不同的租户中注册 .

如果它们在同一租户中注册,则可以使用清单中的knownClientApplications属性来同时允许两者同意 .