在Azure中将SingleTenant转换为Multitenant应用程序

时间:2018-08-02 02:35:05

标签: azure office365 azure-active-directory microsoft-graph office365-apps

我有一个以 daemon模式 [无接口]运行的客户端应用程序。 该守护程序将与Azure中创建的应用程序对话(当前为单租户),以使用O365 Graph API来获取用户。 所使用的身份验证机制是Auth2证书/缩略图。 在Azure本身创建应用程序时,管理员直接授予对应用程序的权限。

现在我需要以多租户身份将此守护程序(客户端)和应用程序蔚蓝化。 在阅读了一些文章之后我所关注的事情

  1. 将应用标记为天蓝色的多租户
  2. 在客户端(作为守护程序运行)https://login.microsoftonline.com/common/oauth2/token中指向令牌URL中的/ common。

问题:

  1. 此后,我可以获取访问令牌,但是对于任何查询,我都收到错误消息“无法建立调用应用程序的身份”。

  2. 由于这里没有没有用户干预,我该如何授予租户B应用程序访问租户A数据的权限,就像我的情况一样?我在清单文件中可以做的任何事情

  3. 如果承租人B的应用程序正在访问承租人A的数据,那么两个应用程序都应该是突变的吗?

大量文章介绍了如何基于用户登录(用户同意)进行流程。但是我的客户端应用程序作为守护程序运行。如何在Azure应用程序中直接授予权限/访问其他租户数据的机制? [假设我是两个租户的管理员,并且我可以完全访问两个租户]

1 个答案:

答案 0 :(得分:0)

  1. 使用client_credentials流登录\ OAuth2 \ token端点时,不能使用公共端点。这是因为common旨在标识用户的“主”目录,并且当他们以交互方式登录时,除非被覆盖,否则他们将被重定向以登录到其主目录。

2&3。租户B没有获得注册的应用程序,而仅获得了企业应用程序。链接的已注册应用将是租户A,此处的通信不是双向的。 A在A中拥有一个企业应用程序,在B中拥有一个企业应用程序。您可以使用A中的已注册应用程序来设置所有企业应用程序的权限,但是根据权限类型,管理员/用户必须在其各自的租户中授予权限。 (A和B)。以用户身份登录时,您可以使用应用程序注册。为了访问B,您将必须调用包含B的租户ID的令牌终结点。

要使一个应用程序能够访问多个租户,您需要:

  1. make the Application Multi-Tenanted。记下该应用程序的ApplicationId。
  2. 使用PowerShell登录到要授予应用程序访问权限的租户。
  3. 使用Cmdlet New-AzureRmServicePrincipal -ApplicationId <ApplicationId>,这是您前面提到的位置。

这将基于租户A中的应用程序在租户B中创建服务主体。然后,A中的应用程序便能够使用令牌端点为租户B登录访问。