现在,我在Azure活动目录1中有一个应用程序,在Azure活动目录2中有一个Web api。我的目标是允许AAD1和AAD2中的用户都可以登录App。
到目前为止,我已将App和Api作为多租户启用,将清单中的对方添加为已知的客户端应用程序。
我尚未完成的事情:将一个作为自定义域添加到另一个,添加权限btw api和app,我遇到了这两个问题。
现在我的错误信息是:
授权通过授权服务器进行访问时发生错误:unauthorized_client AADSTS65005:无效>资源。客户端已请求访问未在客户端应用程序注册中请求的权限中列出的资源。
当我尝试在api中提供访问权限时,在所需的权限列表中,我没有看到Web应用程序(位于其他目录中)。我该怎么办呢?
如果我同时在同一目录下移动App和Api,那么是否允许来自其他目录的用户登录?
答案 0 :(得分:1)
为了让您在租户1中看到Web API作为"必需权限列表"的选项,您需要将Web API的服务主体配置到租户1中。
您可以通过多种方式执行此操作,但最简单的方法可能是通过生成登录URL来简单地登录Web API。一旦您使用租户1中的用户登录,服务主体将在租户中进行配置,然后成为可供选择的选项。
https://login.microsoftonline.com/common/oauth2/authorize?client_id=<appid>&response_type=code&redirect_uri=<replyurl>&resource=<resource>&prompt=consent
另一个选项可能是使用AAD PowerShell根据您的Web API App ID创建服务主体:
New-AzureADServicePrincipal
New-AzureADServicePrincipal -AccountEnabled $true -AppId $MyApp.AppId -DisplayName $App -Tags {WindowsAzureActiveDirectoryIntegratedApp}
成功将服务主体置于所需权限后,上述错误消息应该消失。
答案 1 :(得分:1)
除了Shawn Tabrizi的回答,您还可以将API指定为应用程序的已知客户端应用程序。
所以在你的应用程序清单中:
"knownClientApplications": [
"your-api-client-id"
]
然后,如果您尝试对应用程序进行身份验证,它也可以同时对API进行同意。