您可能知道,我正在创建一个使用B2B功能的多租户天蓝色应用程序。
我正在测试B2B功能,经过一些研究后我得到了一份工作样本。
小摘要:用户根据共同权限进行身份验证,第一个令牌是通过授权代码的共同权限获取的,从那时起,每当我需要服务客户端时,我都会尝试从“当前租户”权限中获取这些令牌。
当我请求'我'时,它只适用于家庭租户。当我向可信赖的租户请求我时,我收到一条错误,指出目录中不存在我的用户标识符。可能是因为用户实际上并不存在于受信任的租户中。
当我请求用户时,它工作正常。我可以同时获得家庭租户用户和受信任的租户用户。
这是正常行为吗? 这是我需要以编程方式处理的东西,还是通过使用AD图解决了? (所以,当我知道我需要用户信息时,只需查询家庭租户?) 或者这是一个错误吗?
对此的任何想法都将非常感谢!
答案 0 :(得分: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?
答案 1 :(得分:0)
我注意到当您想要在租户之间切换时,您需要重新授权当前租户。 我这样做了: 1.首先需要针对公共端点进行登录。 2.每当我需要某个资源的令牌时,我会尝试静默获取令牌。
=>这可能会抛出2个不同的AdalSilentTokenAcquisitionException
我能够通过将用户重定向到授权请求URL来触发同意流程。 因此,当我收到AdalSilentTokenAcquisitionException时,错误代码为" failed_to_acquire_token_silently"然后我必须将用户重定向到authContext生成的URL(authenticationContext.GetAuthorizationRequestUrlAsync),清除缓存后,不会找到刷新令牌,然后重定向用户辞职。