是否可以模拟从受信任的应用程序登录,以便 azure 可以在没有任何 UI 交互的情况下建立会话?

is it possible to simulate sign-in from the trusted app so that azure would establish a session without any UI interaction?

假设我们有两个网站,A 和 B 此外,我们还有一个移动应用程序 C 这三个都使用 Azure AD B2C

假设用户 X 仅在移动应用程序 C 中通过身份验证(通过 Azure AD B2C)。然后,用户X在手机上点击“去网站A”UI。我们希望根据 X 在移动应用程序中成功验证的事实自动在 A 上验证 X。

为此,我们可以创建一个特殊的自动登录 URL 接收签名的 JWT,其中 UID (X's) 被编码。 “A”将从 JWT 中提取 UID 并打开一个本地会话,其中 X 已通过身份验证。

太棒了。但。如果 X 转到网站 B 并单击那里的“登录”怎么办?在这种情况下,用户 X 将被重定向到尚未设置活动会话的 Azure AD B2C,用户 X 将需要再次重新输入用户名和密码才能打开会话。我们记得X已经在手机端做过一次了,在“C”上再认证一次有什么意义呢?

如果 Azure AD B2C 会话可以通过特定的自动登录页面以某种特定方式打开,这样第二次登录就可以在不显示登录表单的情况下对用户 X 进行身份验证,那就太好了。例如,JWT 令牌将发送到 Azure AD B2C,以便 Azure 将该用户登录,就像用户输入用户名和密码一样,并将用户重定向到网站(“C”)。在这种情况下,第二次“登录”后不会显示任何表单。但是好像这样的流程在Azure上是做不到的。

但是如何实现呢?

如果您使用 webview 进行身份验证,用户将在移动设备上的所有应用程序上获得 SSO。无需实施,这是默认行为。

如果您尝试了它但它不起作用,可能是因为您没有向 MSAL 库传递 login_hint 参数。尝试向其中传递一个虚拟值。