IIS7如何处理auth模块?内存范围?

时间:2011-01-08 16:05:29

标签: c# authentication iis-7 iis-modules

那些参与过这样一个项目的人你可能知道这个网站:

  

Developing a Module Using .NET

在本文中,Mike Volodarsky撰写了一篇关于如何为IIS7创建自己的安全身份验证扩展的非常好的帖子。

我接受了这个并根据自己的需要进行了修改。我正在获取基本身份验证凭据并调用外部Web服务来从不同的Active Directory域验证用户。

到目前为止这个原则上运作正常。

调用Web服务需要一些时间,每个请求,站点,资源(图像,样式表,javascript文件等)都会导致IIS7调用模块并再次进行身份验证。

我不知道IIS7如何处理这个模块所以我决定创建一个基于sql-table的安全令牌,其生命周期为十分钟。所以现在我的代码检查这个令牌是否可用并授予访问权限,如果没有,请调用Web服务再次进行身份验证。

我开发了一切,效果很好。在生产中我遇到了更糟糕的超时,发现我的SQL连接是问题所在。连接池已重载。我修复了一个错误的解决方法,将池大小设置为非常大的数字。

现在这是我的问题/问题:

有没有人知道这个模块是否会以任何方式留在内存中,因此我可以在内存中存储令牌 - 应用程序池范围?我们的想法是在应用程序运行时将令牌存储在内存中。但我找不到任何信息来帮助我了解如何在IIS7中处理模块,以及我的想法是否是解决问题的方法。

1 个答案:

答案 0 :(得分:1)

您不会将模块本身保留在内存中,但通常使用加密的cookie或会话来维护信用。不过,听起来你有点混淆了问题。您的模块听起来可以(并且应该)由自定义成员资格提供程序处理,而不是自定义身份验证模块。

假设(根据您的帖子)您通过网络(表面上是从Web表单)获取用户的用户名和密码,您应该使用ASP.NET中的表单身份验证提供程序,然后实现customMembership提供程序做实际的信用检查。然后,Forms Atuh提供程序可以处理在您的应用程序和用户浏览器之间维护身份验证令牌。