我们有一个多租户应用,在创建新的AuthenticationContext时已经传入“ login.windows.net/common ”。我们错过了备忘录,不久之前已经弃用了“ login.microsoftonline.com/common ”。现在转换的动力是我们的客户也不会工作(例如因为他们落后于“ login.microsoftonline.de ”)。
我们理解正确的方法是首先查询“ login.microsoftonline.com/ tenant-domain-name /。熟知/ openid-configuration ”,并且使用我们获得的端点,而不是硬编码 login.microsoftonline.com 。我们想知道的是应该使用我们得到的字段。
我无法找到权威字符串应该是什么的权威(没有双关语)来源。我检查过的一些地方:
因此,在我们查询发现服务之后,我们将使用什么来获取权限?
谢谢。
答案 0 :(得分:0)
https://login.microsoftonline.com/{common-or-tenant}/.well-known/openid-configuration
元数据文档可用于确定用户登录的权限URL(它是OpenID Connect标准的一部分)。通常,开发人员将使用OpenID Connect库或包来使用此元数据文档并构造对它们的请求。但如果您打算自己消费,我建议您阅读OpenID Connect Discovery spec。它将指示您authorization_endpoint
是用于登录用户的URL。
回复:普通与租户。当您不知道用户所属的公司/租户/目录时,可以使用公共端点。这是最常见的情况。如果您以某种方式知道用户属于哪个租户(他们为您的公司工作,他们以某种形式告诉您,等等)您可以改为使用租用端点。这将直接将用户引导至其公司的登录页面,而不是执行查找用户所属租户的发现步骤。
答案 1 :(得分:-1)
要登录多租户应用,我们需要使用https://login.microsoftonline.com/common
。以下是该文件的解释供您参考:
当响应从/ common端点返回时,令牌中的颁发者值将对应于用户的租户。重要的是要注意/公共端点不是租户而不是发行方,它只是一个多路复用器。使用/ common时,需要更新应用程序中用于验证令牌的逻辑以将其考虑在内。
因此,我们需要在授权端点中使用 common 。之后,我们可以获得真正的租户并在令牌端点中使用特定租户。
将tenant_region_scope映射到正确的login.microsoftonline.com变体,并附加“/ common”?或“/租客”?
你对tenant_region_scope有什么看法?根据我的理解,多租户应用的范围与单租户应用相同。例如,Microsoft Graph是一个多租户应用程序,其范围可以参考here。
以下是有关多租户应用开发的有用文章和代码示例:
How to sign in any Azure Active Directory (AD) user using the multi-tenant application pattern
Build a multi-tenant SaaS web application that calls a web API using Azure AD