0

我正在开发一个门户网站,并想检测我们域中的用户是否存在。有人告诉我,最好的方法是进行反向 DNS 查找以检查远程主机以及用户是否在我们的域中,然后使用他们的 AD 凭据登录。

如果用户在我们的域中,我们希望用户登录:

首先,我们将进行 IP 范围检查,然后进行反向 DNS 查找...

在另一个系统上,我们在 ASP 页面中使用此代码

Dim oIIS
Dim vEnableRevDNS
Dim vDisableRevDNS

vEnableRevDNS = 1
vDisableRevDNS = 0

Set oIIS = GetObject("IIS://localhost/w3svc/1/ROOT")
oIIS.Put "EnableReverseDNS", vEnableRevDNS
oIIS.SetInfo
Set oIIS = Nothing

有没有办法在 MVC 2:C# 中做到这一点?

澄清一下:我仍将使用 Windows 集成身份验证 - 但是我希望该过程是无缝的...如果您是我们的网络,您会自动登录...如果您不是,您会被转发到登录页面

将有 Intranet/Extranet 和公共用户访问 - 每个都有不同的登录过程 - 我想纯粹使用反向 DNS 作为一种机制来定向到入口点。

感谢您的任何指示。

4

1 回答 1

2

反向 DNS 不是一种强大的身份验证机制。

集成 Windows 身份验证是 IIS/ASP.NET 选项。您打开它,浏览器和 IIS 会处理其余的事情。用户通过身份验证到达您的应用程序。(确保您已关闭匿名访问)

编辑:DNS 根本不是一种身份验证机制。无论谁编写了您的技术规范,都应该阅读 Windows 集成身份验证 (NTLM/Kerberos) 的实际工作原理。

可以说,它不依赖于分配给您机器的 DNS 条目。

编辑2:

要使 Windows 集成身份验证无缝,您需要在客户端计算机上完成三件事:

  • 使用支持 NTLM/Kerberos-Auth 的浏览器(Internet Explorer,并且设置正确:Firefox)
  • 使用属于该 Active Directory 域成员的计算机(这也可能适用于其他受信任的 AD 域)
  • 登录到 AD 域帐户。

这样,您将获得自动登录。没有提示,你就在那里。

但是,如果您没有满足这些要求,那么在 Internet Explorer 和 Firefox 中,您将收到标准密码提示(不是在您的应用程序中,只是标准浏览器提示)。您无法选择显示友好的错误消息,因为这是在您的应用程序上下文之外处理的。

如果用户使用的浏览器不支持 NTLM/Kerberos,您将收到无休止的身份验证提示 - 或者浏览器只会显示“拒绝访问”页面。

于 2011-01-19T12:59:22.177 回答