c# - ADFS - Windows 集成 OR Forms 身份验证

标签 c# .net adfs

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

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

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

我的问题是,是否有可能满足这些要求:

  • 如果用户使用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 服务器上有一个人工网站,并且该网站重定向到“/adfs/ls/表格”

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

马蒂亚斯

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

相关文章:

c# - 当有单引号时 JsonConvert.SerializeObject 失败

c# - Serilog MSSQL Sink 不会将日志写入数据库

jquery - 在内联添加时显示 jqg1 而不是从数据库返回的 id

c# - 如何在 .NET 4.5 中运行这两种方法 'at the same time'?

c# - 生成的表与 rowspan 导致额外的单元格

ADFS 4.0 userInfo 端点仅返回子声明

c# - 使用 appsettings.json 配置 Serilog RollingFile

c# - 列中带有按钮的 .net Radgrid 仅在第二次单击时触发 itemcommand

wif - WIF 安全 token 超时从何而来?

active-directory - 身份服务器和 ADFS