Azure ad b2c 如何在多租户web客户端(同一浏览器中的多个B2C身份)中验证和存储令牌
我正在设计一个单页应用程序(SPA)和API,它将支持多个租户,包括在同一个客户端浏览器中。想象一下类似于Azure门户的体验,用户可以在他们登录Azure广告的身份之间切换,但在本例中,我使用的是Azure广告B2C。所有登录都通过单个Azure AD B2C实例进行。重要的是,租户之间不一定要相互了解,因为他们是白标的——用户可能会被重定向到Azure ad b2c 如何在多租户web客户端(同一浏览器中的多个B2C身份)中验证和存储令牌,azure-ad-b2c,msal,msal.js,Azure Ad B2c,Msal,Msal.js,我正在设计一个单页应用程序(SPA)和API,它将支持多个租户,包括在同一个客户端浏览器中。想象一下类似于Azure门户的体验,用户可以在他们登录Azure广告的身份之间切换,但在本例中,我使用的是Azure广告B2C。所有登录都通过单个Azure AD B2C实例进行。重要的是,租户之间不一定要相互了解,因为他们是白标的——用户可能会被重定向到https://multitenant.app/tenantA并通过B2C登录,当被引导到https://multitenant.app/tenantB
https://multitenant.app/tenantA
并通过B2C登录,当被引导到https://multitenant.app/tenantB
并通过B2C登录。两个租户不需要在客户机上共享数据
我该怎么做:
1) 设计客户端,以便请求https://multitenant.app/tenantX
被定向到Azure AD B2C,使用tenantX
的规则进行登录,以及
2) 设计客户端,以便当用户导航到https://multitenant.app/tenantX
是否在浏览器中
目前,我希望需要截获客户端上对后端API的请求,确定是否需要首先重定向到B2C,以便登录到该请求所针对的租户,并将该租户的适当访问令牌附加到API请求。(所有这些都假设我使用隐式流,以便在客户端上有可用的访问和刷新令牌。)
这有意义吗?有更好的办法吗?我已经讨论过如何使用服务器发布的会话cookie,以便浏览器处理“拦截请求并附加凭据”这一方面的问题,所以这可能是一个避免在客户端上维护所有这些令牌的选项
当客户登录B2C时,这是如何工作的?我是否可以充分调整/禁用B2C SSO功能,以便单个用户代理(浏览器)仍然可以获得多个不同的令牌(用于不同的身份)?方法需要稍微不同。这就是微软在Azure门户中使用“租户选取器”的方式
我喜欢这个答案!非常感谢你!也许我对“身份”含义的思考是完全错误的,但如果我不想要SSO呢?这更像是Azure门户中我的身份列表,而不是我在选择身份后看到的可访问租户列表。那部分是怎么工作的?我假设MSAL.js支持一次使用多个身份登录到多个AAD租户(包括B2C)?如果是这样,那就行了。“ID1”看到的是
tenata
,“ID2”看到的是tenantB
(&也可能是tenantC
,带有SSO)。只是不知道怎么做。谢谢Azure门户中的身份列表在B2C中无法很好地转换。B2C是一个租户,用户可以在租户中拥有多个身份。他们不会像AAD的账户采集器那样让SSO进入他们的账户。B2C支持一个租户的每个会话一个登录帐户。您可以在每个用户上添加一个扩展属性,指示他们有权访问的“租户”。嗯,因此我必须在自定义策略中关闭SSO/会话行为才能实现我的目标,对吗?然后在我的应用程序中使用ID令牌和/或访问/刷新令牌在我的终端上维护多个会话?我可以在同一个浏览器客户端中为单个AAD B2C租户使用MSAL.js维护多个不同身份的令牌吗?