我正在设计一个单页应用程序 (SPA) 和 API,它将支持多个租户,包括在同一客户端浏览器中。想象一下类似于Azure Portal的体验,用户可以在他们已经登录到Azure AD的身份之间进行切换,只是在这种情况下,我使用的是Azure AD B2C。所有的登录都是通过一个Azure AD B2C实例发生的。重要的是,这些租户不一定要知道对方,因为它们都是白标的 -- 用户可能会被重定向到以下地址 https://multitenant.app/tenantA
并通过B2C方式登录,当被引导到的时候,体验完全不同。https://multitenant.app/tenantB
并通过B2C在那里登录。两个租户之间不需要在客户端上共享数据。
我可能如何去做:1)设计客户端,使请求到 https://multitenant.app/tenantX
被定向到Azure AD B2C,其方式是使用以下规则进行登录 tenantX
2)设计客户端,使MSAL.js库正确地提供一个包含特定于 tenantX
当用户浏览到 https://multitenant.app/tenantX
在浏览器中?
目前我希望需要在客户端拦截对后端API的请求,先确定是否需要重定向到B2C,以便登录到请求的租户,并将该租户的相应访问令牌附加到API请求中。(所有这些都是假设我使用了隐式流,所以我在客户端有访问&刷新令牌可用)。
这样做有意义吗?有更好的方法吗?我曾讨论过使用服务器发出的会话cookie,这样浏览器就可以处理 "拦截-请求-附加-凭证 "方面的问题,所以也许这是一个可以避免在客户端维护所有这些令牌的选项?
而当客户端登录B2C时,这又是如何工作的呢?我是否可以充分地调整禁用B2C SSO功能,使单个用户代理(浏览器)仍然可以获得多个不同的令牌(用于不同的身份)?
方法需要有点不同。微软在Azure Portal中的 "租户挑选器 "就是这样做的。
要在AAD B2C中翻译,你可以。