为了满足业务需求,我们将采用使用Azure B2B和B2C的方法。80%的用户是B2B消费者,20%是B2C(使用社交账户登录)消费者。
我必须在ReactJs中设计一个导航流:
- 用户登录主页
- 主页检查用户会话是否存在。是,则允许用户单点登录。
- 如果没有,用户被重定向到B2B登录页面,在那里再次由MSAL检查Cookie,用户自动登录。
- 如果cookie不存在,允许用户在B2B登录页面输入用户名。
问题1:是否有办法向用户显示一个选项,指导他们通过超链接使用Azure B2C登录页面,仅适用于此应用程序(而不是整个公司),如果他们想使用他们的社交帐户登录?
*问题2:如果上面的问题1不可能,那么一旦用户输入带有"outlook.com"的用户名,我是否可以将用户重定向到B2C登录页面,而不是继续在B2B页面上登录,因为该用户名在B2B上会失败?
问题3:如果问题2也不可能,那么用户将到达login.microsoft.com上的错误页面。我可以自定义相同,以避免进入错误页面,并重新引导用户使用Azure B2C登录页面,而不是在错误页面上阻止用户导航,或者至少在错误页面上有一个超链接,将用户引导到B2C登录页面。*
AADSTS50020:来自身份提供者'live.com'的用户帐户'xxx@outlook.com'在租户'XYZ'中不存在,并且无法访问该租户中的应用程序'XXX-XXX-XXX'。该帐户需要首先作为外部用户添加到租户中。退出并使用不同的Azure Active Directory用户帐户再次登录。
所有这些问题都是为了避免创建一个自定义的React JS登陆页面,用户需要在企业登录(Azure和Azure)之间进行选择B2B)和社交登录(Azure B2C)。
此外,在Azure AD (B2B)上添加社交联盟的可能性不存在,因为它是组织云安全策略。
首先要了解的是,如果您试图在同一个租户中使用Azure AD B2B和Azure AD B2C。如果是,我建议你看看这个:https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/15009315-can-i-use-azure-ad-b2b-collaboration-together-with
其次,您尝试实现的场景是可能的,您可以添加多个目录,一个用于Azure AD B2B用户进行身份验证,另一部分用于消费者使用社交idp(如Facebook, Google等)登录到您的应用程序。
你可以尝试检查以下链接,因为它们在同一上下文中发言:
Azure AD B2B和B2C在同一应用程序
如何在Azure B2B和B2C之间进行联盟