2016-11-17 61 views
0

正如您所知,我正在创建一个使用B2B功能的多租户天青应用程序。使用Microsoft Graph的B2B

我正在测试B2B功能,经过一些研究后,我得到了一个工作示例。

小概要:用户对普通权限进行身份验证,第一个令牌是通过授权代码的通用权限获取的,从那时起,每次我需要一个服务客户端时,我尝试从“当前租户”权限获取这些令牌。

当我要求'我'时,它只能对付住户。当我向可信租户索要我的信息时,出现错误消息,表示我的用户标识符不存在于目录中。可能因为用户实际上并不存在于可信租户中。

当我要求用户时,它工作正常。我可以同时获得住房租户用户和可信租户用户。

这是正常的行为吗? 这是我需要以编程方式处理的东西,还是通过使用AD图解决了这个问题? (所以当我知道我需要用户信息时,只需查询主租户?) 或者这是一个错误?

任何想法都将不胜感激!

+0

B2B的一个重要内容是邀请函。你是否邀请用户从一个AAD进入另一个? –

+0

是的,来自租户a的用户a已被邀请到租户b。在向租户b请求令牌时更改权限时,虽然我可以向租户b请求用户,但我无法请求我。这是通过向我询问住宅租户来解决的。所以现在,我是这样固定的。但是现在我遇到了另一个问题,当我回收应用程序时,令牌缓存被清除(使用httpcache)。向租户请求这些用户并不是一个问题,他不会以沉默的方式请求它,而是来自获取令牌的令牌可以完成这项工作。这对'我'不起作用,我总是需要注销/登录 – Identity

回答

0

我注意到,当你想租户之间进行切换,你需要重新授权对目前的租户。 我这样工作: 1.首先登录需要针对公共端点进行。每当我需要一个特定资源的标记时,我会试着无声地获取标记。

=>这可以扔2个不同的AdalSilentTokenAcquisitionException在高速缓存中找到

  • 没有,也没有刷新令牌发现 =>在这种情况下,我再次将用户重定向到登录页面。
  • 当您在租户之间切换时,并且这是您第一次使用您信任的租户进行登录时,可能会出现如下错误:用户或管理员应该同意此应用程序。虽然他的房客的管理员已经将该应用程序添加到家庭租户的目录中。任何人知道为什么需要这种同意?因此,佃农A和佃户B管理员都已获得同意。为什么B中的B可信用户仍然需要同意?

我能够通过将用户重定向到授权请求URL来触发同意流程。 因此,当我得到一个AdalSilentTokenAcquisitionException,并且错误代码为“failed_to_acquire_token_silently”时,我必须将用户重定向到由authContext(authenticationContext.GetAuthorizationRequestUrlAsync)生成的URL,当缓存被清除时,将不会找到刷新标记,然后重定向用户辞职。

0

如果您使用的是公共端点,则通过B2B协作功能添加到目录的访客无法在多租户应用或Microsoft Graph上正常工作。

公共端点将始终通过他/她的住宅承租人对用户进行认证,而不是针对他(他)是客人的任何承租人。

为了成功地为客人查询我,您需要让他们通过租户特定端点登录他们作为来宾的租户。

见我回答这个其他职位进行了较为深入的解释/背景: Can users from an unmanaged Azure AD directory, sign into an Azure AD multi-tenant application which resides in a different directory?