在Azure中将单租户转换为多租户应用程序

在Azure中将单租户转换为多租户应用程序,azure,office365,azure-active-directory,microsoft-graph-api,office365-apps,Azure,Office365,Azure Active Directory,Microsoft Graph Api,Office365 Apps,我有一个客户端应用程序,它以守护程序模式运行。 此守护进程将与Azure中创建的应用程序(当前为单租户)对话,以使用O365 Graph API获取用户。 使用的身份验证机制是Auth2证书/指纹。 在azure中创建应用程序时,管理员直接授予应用程序权限 现在我需要在azure中将这个守护进程(客户端)和应用程序作为多租户。 我读了一些文章之后关注的事情 在azure中将应用程序标记为多租户 指向客户端(作为守护进程运行)中的令牌url中的/common 问题: 在此之后,我能够获得访问令牌,

我有一个客户端应用程序,它以守护程序模式运行。 此守护进程将与Azure中创建的应用程序(当前为单租户)对话,以使用O365 Graph API获取用户。 使用的身份验证机制是Auth2证书/指纹。 在azure中创建应用程序时,管理员直接授予应用程序权限

现在我需要在azure中将这个守护进程(客户端)和应用程序作为多租户。 我读了一些文章之后关注的事情

  • 在azure中将应用程序标记为多租户
  • 指向客户端(作为守护进程运行)中的令牌url中的/common
  • 问题:

  • 在此之后,我能够获得访问令牌,但对于我进行的任何查询,我都会得到错误“无法建立调用应用程序的标识”

  • 由于这里没有用户干预,我如何授予租户B应用程序访问租户A数据的权限,就像我的案例中的用户一样?在清单文件中我能做什么

  • 如果租户B的应用程序正在访问租户A的数据,azure中的两个应用程序是否应该相互关联

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

  • 使用
    client\u凭据
    流登录\OAuth2\token端点时,无法使用公共端点。这是因为common设计用于识别用户的“主”目录,当用户以交互方式登录时,除非被覆盖,否则会重定向到用户的主目录 二,三。租户B没有获得注册的应用程序,它只获得企业应用程序。链接的注册应用程序应该是租户A,这里的通信不是双向的。A在A中有一个企业应用程序,在B中有一个企业应用程序。您可以使用A中注册的应用程序为所有企业应用程序设置权限,但管理员/用户(取决于权限类型)必须在各自的租户(A&B)中授予权限。当您以用户身份登录时,您将使用应用程序注册。为了访问B,您必须调用包含B的租户id的令牌端点

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

  • 。记下应用程序的ApplicationId
  • 使用PowerShell登录要授予应用程序访问权限的租户
  • 使用Cmdlet
    New-AzureRmServicePrincipal-ApplicationId
    ,其中是您前面提到的一个
    这将基于租户a中的应用程序在租户B中创建服务主体。然后,租户B中的应用程序将能够使用令牌端点登录访问

    我的用例如下所示。我将执行图形api调用来检查用户是否存在。如果用户存在,则应同时在两个租户中进行检查,并返回用户信息。[这应该是可扩展的,而不是2可以有更多的租户,但假设我是所有租户的管理员,因此发送每个租户的租户id和访问令牌,然后向Graph API发送请求不是一个选项]3。当客户端应用程序作为deamon服务运行时,我只能使用客户端凭据身份验证流。任何实现此目的的建议??此[链接]()是否有帮助??不可能同时检查多个租户。您需要使用
    client\u凭证
    flow独立登录到每个租户。您需要将逻辑写入代码以处理通过每个租户的循环,运行检查,如果检查未完成则抛出OK。在这种情况下,一个应用程序(我的客户端)就足以与所有租户对话了?从一个应用程序中,我如何与多个租户交谈?谢谢Phil!我想现在我对如何进行有了一些想法!!