自定义登录屏幕 - 集成 Windows 后备身份验证

Custom Login Screen - Integrated Windows Auth with fall back

我想创建一个自定义登录屏幕,它将尝试通过集成的 Windows 身份验证(使用 SPNEGO 或其他)对用户进行身份验证,如果该尝试失败,则回退到基于表单的方法。

该过程理想情况下会像这样工作...

用户以有效 AD 用户身份登录

  1. 用户尝试访问应用程序并被重定向到 IdentityServer
  2. 自定义逻辑尝试使用 AD 凭据验证用户并成功。
  3. 用户已通过身份验证并重定向...

用户未以有效 AD 用户身份登录

  1. 用户尝试访问应用程序并被重定向到 IdentityServer
  2. 自定义逻辑尝试使用 AD 凭据验证用户但失败了。
  3. 用户会看到一个用于输入用户名和密码的表单。
  4. 用户已通过身份验证并重定向...

我希望创建一个自定义的 IUserService 实现来实现这一点,但通过阅读文档,我并不清楚如何做到这一点。

我是否必须创建自定义身份提供程序才能实现此目的?

任何指导将不胜感激。

我认为,您不必担心自定义 IUserService。一旦 IdSrv3 从用户那里收集了凭据,IUserService 就会查找用户。所以你的整合需要更早发生。

棘手的是后退。如果您有一个受 windows 身份验证保护的页面,则由客户端决定它是否可以进行身份​​验证。如果它无法对用户进行身份验证,它通常会提示用户输入凭据并尝试提交这些凭据。它不会自动知道要做什么。

可能最好的用户体验方法是显示一个页面并允许用户选择如何登录,就像您可以选择使用 Google 等登录一样。然后您可以将其连接起来作为外部提供商。