我有这种情况,我们必须通过Azure AD验证企业用户,但通过Azure AD B2C验证外部用户 - 所有这些都来自同一个登录屏幕。
有一些Web应用程序将共享此功能。这些应用程序来自各种技术堆栈,范围从.Net到Java-Spring + Angular 2。
您建议的方法是什么? 道歉,如果这个问题已经被提出并得到了回答,但却找不到相关的指导。 MSAL库会解决这个问题吗?此外,还没有任何针对Java的MSAL实现。 Azure AD B2C Premium是否支持此功能?
提前感谢您的帮助!
答案 0 :(得分:4)
目前,您唯一的选择是实施对Azure AD& Azure AD B2C在您的应用程序中独立使用。您必须要求用户在两个身份提供者之间进行选择,然后调用正确的身份提供者。
计划在Azure AD B2C中添加对Azure AD组织用户的支持,作为身份提供者,此时不需要进行两次集成。但是,在不久的将来,这种能力是不可能的。
我就如何在.NET应用程序中支持两者提出了一些指导,这可能会让你走上正确的轨道:https://github.com/dstrockis/AAD-B2C-Hybrid
答案 1 :(得分:0)
如果您为许多组织提供了软件即服务(SaaS)应用程序,则可以将应用程序配置为接受来自任何Azure Active Directory(Azure AD)租户的登录。这种配置称为使您的应用程序成为多租户。同意将其帐户用于您的应用程序后,任何Azure AD租户中的用户都可以登录您的应用程序。
https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant
答案 2 :(得分:0)
要将Azure AD用于公司用户登录,将Azure B2C用于外部用户,您需要配置以下内容
步骤1-配置身份提供程序 如果您使用的是Identity Experience Framework政策
OpenIdConnect
协议为企业用户身份验证创建Azure AD声明提供程序login-NonInteractive
TechnicalProfile创建外部用户身份验证的Azure AD B2C声明提供程序<ClaimsProviderSelections>
下的<UserJourneys>
-> <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signupsignin">
示例:
<ClaimsProviderSelections>
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
<ClaimsProviderSelection TargetClaimsExchangeId="AADExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
如果您正在使用用户流,则需要配置以下内容
OpenID Connect provider
Email Signin
OpenID Connect provider
第2步-创建应用注册
步骤3-将在“应用注册”中创建的应用重定向到您的应用URL的
步骤4-在测试策略时,将为您提供2个选项,即用于外部用户身份验证的用户名和密码,其中用户使用在Azure AD B2C中为其配置的用户名和密码第二个选项是登录页面底部的链接,以使用Azure AD登录。用户单击此链接时,将带他们到Azure AD登录页面进行身份验证。
有关更多详细的配置步骤,请参考以下链接