我们正在研究进行基于机器的身份验证,允许特定机器上的任何用户访问我们的 .Net 站点。机器列表会发生变化,但都在内部网络上。假定它们的 IP 地址不是静态的。
为了使其更易于管理,我们希望能够限制对 Active Directory 计算机组的访问。
我可以管理 AD 查询,我的问题是提取机器名称并验证整个会话的最佳位置在哪里?
我考虑创建一个新的 HttpModule,但似乎我必须对每个请求进行身份验证。如果涉及 AD 查询,则对每个请求进行身份验证似乎并不理想。
我们正在研究进行基于机器的身份验证,允许特定机器上的任何用户访问我们的 .Net 站点。机器列表会发生变化,但都在内部网络上。假定它们的 IP 地址不是静态的。
为了使其更易于管理,我们希望能够限制对 Active Directory 计算机组的访问。
我可以管理 AD 查询,我的问题是提取机器名称并验证整个会话的最佳位置在哪里?
我考虑创建一个新的 HttpModule,但似乎我必须对每个请求进行身份验证。如果涉及 AD 查询,则对每个请求进行身份验证似乎并不理想。
Web 是无状态的,因此无论您使用什么技术,每个请求都始终经过身份验证。然而,不打击 AD 的诀窍是使用会话 http cookie。您将在第一个请求中设置此 cookie,并在后续请求中检查它。您需要对 cookie 进行某种加密保护,但幸运的是,这已在 ASP.NET 中准备就绪。我想说您可以利用表单身份验证基础架构来设置和验证 cookie - 您只需将初始身份验证卸载到 AD,而不是从已发布的表单中读取。
这是一个很好的起点:
了解表单身份验证票和 Cookie http://support.microsoft.com/kb/910443
您不需要对每个请求进行身份验证。使用您的 HttpModule 验证第一个请求,然后将请求者添加到会话中,或者在短时间内缓存凭据。