正如您可能知道的,我正在创建一个多租户的azure应用程序,它使用的是B2B功能。
我正在测试B2B功能,经过一些研究,我得到了一个工作样本。
小结:用户根据公共权限进行身份验证,首先使用授权代码通过公共权限获取令牌,然后每次需要服务客户端时,我都会尝试从“当前租户”权限获取这些令牌。
当我请求“我”的时候,这只会对房客不利。当我向受信任的租户请求时,我得到一个错误,即目录中不存在我的用户标识符。可能是因为用户实际上并不存在于受信任的租户中。
当我请求用户时,它可以正常工作。我可以得到两者,家庭租户用户和信任租户用户。
这是正常行为吗?这是我需要以编程方式处理的东西,还是使用AD图来解决这个问题?(因此,当我知道我需要用户信息时,只需查询房屋租户?)还是这是个窃听器?
任何有关这方面的想法都将不胜感激!
发布于 2016-11-21 08:49:41
我注意到,当您想在租户之间切换时,您需要针对当前的租户重新授权。我让它以这样的方式工作: 1.第一次登录需要针对公共端点执行。2.每当我需要一个特定资源的令牌时,我都会默默地获取令牌。
=>这可以抛出2种不同的AdalSilentTokenAcquisitionException
我能够通过将用户重定向到授权请求URL来触发同意流。因此,当我得到一个(authenticationContext.GetAuthorizationRequestUrlAsync),错误代码是"failed_to_acquire_token_silently“时,当缓存被清除时,我不得不将用户重定向到authContext failed_to_acquire_token_silently生成的URL,不会找到刷新令牌,然后重定向用户辞职。
发布于 2016-11-20 08:19:10
如果您使用公共端点,通过B2B协作功能添加到目录中的来宾将无法在多租户应用程序或MicrosoftGraph中正确工作。
公共端点将始终针对他/她的家庭租户对用户进行身份验证,而不是针对他(她)是客人的任何租户进行身份验证。
为了成功地查询客户的/me,您需要让它们通过租户特定的端点登录到客户所在的租户.
有关更深入的解释/上下文,请参阅我对另一篇文章的回答:Can users from an unmanaged Azure AD directory, sign into an Azure AD multi-tenant application which resides in a different directory?。
https://stackoverflow.com/questions/40658837
复制相似问题