我正在配置 ADFS 服务器并尝试为我们的信赖方应用程序实现用户友好的登录。

据我所知,目前有两个相关选项:

  • Windows 身份验证 :这非常适合作为单点登录提供程序,但如果用户当前不在正确的 Windows 域中,则会提供对用户不友好的弹出窗口。
  • 表单认证 :无论用户来自哪里,这将始终要求登录方法。

  • 我的问题是,是否有可能满足这些要求:
  • 如果用户使用windows账号登录,提供SSO
  • 否则,显示表单登录页面并让用户输入他的 Windows 凭据。
  • 最佳答案

    一般来说,没有检测用户是否在域中或不在网站上的编程方式。因为当您的站点配置了 Windows 身份验证(并禁用匿名)时,如果您不在域中,则会向浏览器发送 ntlm 质询并弹出凭据提示。

    https://serverfault.com/questions/380302/can-i-detect-authenticated-domain-users-in-iis-asp-net-without-prompting-every

    实现这一点的方法是使用 DNS,这也是 ADFS 推荐的引入代理角色的方法。您将拥有将内部 DNS 解析 login.yourcompany.com 到启用了 Windows 身份验证的内部 ADFS,以及将外部 DNS 解析 login.yourcompany.com 到启用了表单例份验证的代理 ADFS 角色。因此,您需要在 DMZ 上托管另一台服务器,以便网络/域外的用户可以访问它。

    除非您在同一个 ADFS 服务器上创建一个人工网站绑定(bind)到外部 IP 并且该网站重定向到“/adfs/ls/forms”,否则无法使用单个 ADFS 服务器执行此操作”

    有关代理及其设置的更多信息
    http://blogs.technet.com/b/askds/archive/2012/01/05/understanding-the-ad-fs-2-0-proxy.aspx

    马蒂亚斯

    关于c# - ADFS - Windows 集成 OR 表单例份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11470125/

    10-13 09:41