我需要为IIS7编写一个与NTLM完全相同的身份验证模块,但需要进行一些额外的检查。模块对Active Directory执行NTLM(以便模块知道用户是否正常),然后需要调用另一个服务以最终验证访问权限。
我必须在身份验证模块中执行此操作,因为IIS WebSite上的实际内容是通过自定义IIS模块提供给我的,但我无法修改客户端,因为它也是黑盒子。另外,我不能使用Windows安全组作为我需要调用的服务,它拥有自己的用户数据库。
我发现这篇关于编写custom Authentication provider的文章,但我真的不知道如何根据Active Directory / Windows验证用户。
有没有人有一些提示我如何实施NTLM?不一定是IIS Centric,我的问题更多是“我从客户端的浏览器中得到什么以及如何验证它?”
答案 0 :(得分:3)
您所描述的内容听起来不像身份验证提供程序,听起来您想要编写授权提供程序。 为此我将处理AuthorizeRequest并使用已经具有有效Windows身份验证令牌的HttpContext.User(假设您启用了Windows身份验证)。 此时,您可以使用IsUserInRole和其他API从ActiveDirectory获取其他数据,或使用System.DirectoryServices获取其他数据。只需确保您进行一些缓存,因为每次请求都可能是性能问题。至少IIS会为你提供具有缓存的Windows Auth。
答案 1 :(得分:1)
查看Waffle,它执行Java中的所有动作。所以你会把它反向移植到另一种语言/基础设施中。