我有一个以 daemon模式 [无接口]运行的客户端应用程序。 该守护程序将与Azure中创建的应用程序对话(当前为单租户),以使用O365 Graph API来获取用户。 所使用的身份验证机制是Auth2证书/缩略图。 在Azure本身创建应用程序时,管理员直接授予对应用程序的权限。
现在我需要以多租户身份将此守护程序(客户端)和应用程序蔚蓝化。 在阅读了一些文章之后我所关注的事情
问题:
此后,我可以获取访问令牌,但是对于任何查询,我都收到错误消息“无法建立调用应用程序的身份”。
由于这里没有没有用户干预,我该如何授予租户B应用程序访问租户A数据的权限,就像我的情况一样?我在清单文件中可以做的任何事情
如果承租人B的应用程序正在访问承租人A的数据,那么两个应用程序都应该是突变的吗?
大量文章介绍了如何基于用户登录(用户同意)进行流程。但是我的客户端应用程序作为守护程序运行。如何在Azure应用程序中直接授予权限/访问其他租户数据的机制? [假设我是两个租户的管理员,并且我可以完全访问两个租户]
答案 0 :(得分:0)
client_credentials
流登录\ OAuth2 \ token端点时,不能使用公共端点。这是因为common旨在标识用户的“主”目录,并且当他们以交互方式登录时,除非被覆盖,否则他们将被重定向以登录到其主目录。 2&3。租户B没有获得注册的应用程序,而仅获得了企业应用程序。链接的已注册应用将是租户A,此处的通信不是双向的。 A在A中拥有一个企业应用程序,在B中拥有一个企业应用程序。您可以使用A中的已注册应用程序来设置所有企业应用程序的权限,但是根据权限类型,管理员/用户必须在其各自的租户中授予权限。 (A和B)。以用户身份登录时,您可以使用应用程序注册。为了访问B,您将必须调用包含B的租户ID的令牌终结点。
要使一个应用程序能够访问多个租户,您需要:
New-AzureRmServicePrincipal -ApplicationId <ApplicationId>
,这是您前面提到的位置。 这将基于租户A中的应用程序在租户B中创建服务主体。然后,A中的应用程序便能够使用令牌端点为租户B登录访问。