对于一个客户,我需要设置 Azure Active Directory,因为他希望他的员工和客户通过 Microsoft SSO 登录。我完全没有 AD 经验,并且对文档有点不知所措。 “客户”都是B2B客户,因此没有个人账户。这是一个 TypeScript 项目。
请让我知道这个想法是否正确: “客户希望他的员工和外部公司能够登录,因此我需要使用 Multi-Tenancy 应用程序,如果他想手动添加具有访问权限的用户,他可以使用单个租户。”
我们还需要一种方法来读取通过 SSO 登录的用户所在的组。稍后我们会使用这些组为他们分配角色。
因此,用户应该能够通过他们的 Microsoft 帐户登录并允许我们读取他们所在的组。
然后,我们获取访问 token 和 id token 并将它们发送到我们的后端,我们在后端获取用户的组。
我设置了两种不同的 Active Directory 应用程序,一种用于单租户,一种用于 Multi-Tenancy (无个人帐户)。
然后,我将其设置为允许在身份验证中使用访问 token 和 ID token ,添加了一些 token 声明以获取电子邮件,并添加了 Group.Read.All
的 API 权限,以及
GroupMember.Read.All
。我有一个虚拟前端,允许我登录并为我提供访问 token 和 ID token 。
当我登录到单租户应用程序时,一切正常,我可以使用租户中存在的用户登录,并且无需征求管理员同意即可获得所需内容。
当我对 Multi-Tenancy 尝试相同的操作时,我使用与单租户应用程序相同的设置(但配置为 Multi-Tenancy 并且我的前端正在使用
权限:“https://login.microsoftonline.com/organizations/”,
所以“组织”而不是租户 ID,当我尝试使用 Active Directory 用户之外的用户登录时,它会要求我获得管理员同意。
如何避免它询问我的同意? 这是正确的设置还是我需要做一些不同的事情?
非常感谢!
最佳答案
我尝试在我的环境中重现相同的内容,但收到如下错误:
我创建了一个Azure AD Multi-Tenancy 应用程序并授予 API 权限同意:
现在,我尝试使用以下 URL 并以全局管理员身份登录来授予租户广泛的管理员同意:
https://login.microsoftonline.com/organizations/adminconsent?client_id=ClientID
尝试允许用户同意应用程序,如下所示:
转到 Azure 门户 -> 企业应用程序 -> 用户设置 -> 转到同意和权限
确保在企业应用程序用户设置中将以下选项设置为否:
完成上述设置后我可以成功使用另一个租户用户登录应用程序,如下所示:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?
client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://graph.microsoft.com/.default
&state=12345
引用:
关于azure - 如何为 SSO 配置 Azure Active Directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75920607/