如何编写NTLM身份验证模块?

时间:2010-08-04 03:17:40

标签: .net authentication iis-7 windows-authentication ntlm

我需要为IIS7编写一个与NTLM完全相同的身份验证模块,但需要进行一些额外的检查。模块对Active Directory执行NTLM(以便模块知道用户是否正常),然后需要调用另一个服务以最终验证访问权限。

我必须在身份验证模块中执行此操作,因为IIS WebSite上的实际内容是通过自定义IIS模块提供给我的,但我无法修改客户端,因为它也是黑盒子。另外,我不能使用Windows安全组作为我需要调用的服务,它拥有自己的用户数据库。

我发现这篇关于编写custom Authentication provider的文章,但我真的不知道如何根据Active Directory / Windows验证用户。

有没有人有一些提示我如何实施NTLM?不一定是IIS Centric,我的问题更多是“我从客户端的浏览器中得到什么以及如何验证它?”

2 个答案:

答案 0 :(得分:3)

您所描述的内容听起来不像身份验证提供程序,听起来您想要编写授权提供程序。 为此我将处理AuthorizeRequest并使用已经具有有效Windows身份验证令牌的HttpContext.User(假设您启用了Windows身份验证)。 此时,您可以使用IsUserInRole和其他API从ActiveDirectory获取其他数据,或使用System.DirectoryServices获取其他数据。只需确保您进行一些缓存,因为每次请求都可能是性能问题。至少IIS会为你提供具有缓存的Windows Auth。

答案 1 :(得分:1)

查看Waffle,它执行Java中的所有动作。所以你会把它反向移植到另一种语言/基础设施中。