IIS7集成模式在请求之间关闭令牌

时间:2011-02-07 23:23:02

标签: security authentication iis-7 authorization objectdisposedexception

我们正在迁移到IIS7集成模式,并遇到了一个问题。我们使用WindowsAuthentication进行身份验证,然后存储对WindowsPrincipal的引用,以便在将来的请求中我们可以根据需要对AD进行授权。在IIS 7集成模式下,令牌正在关闭(请求之间),因此当我们尝试运行IsInRole时,它会生成一个已处置的异常。有没有办法缓存此令牌或更改我们对WindowsPrincipal的使用,以便我们不需要为每个授权请求发出连续的AD请求来获取它?

以下是从WindowsPrincipal.IsInRole(“”)引发的异常 - System.ObjectDisposedException:{“安全句柄已关闭”}

感谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试让IIS为您缓存身份验证信息?

查看web.config部分的选项。特别是authPersistNonNTLMauthPersistSingleRequest属性。 PersistNonNTLM = True可能完全符合您的需要而无需代码中的任何自定义实现。

http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication

答案 1 :(得分:0)

AcquireRequestState事件处理程序中,我刚触及HttpContext.Current.User.Identity.Name,如下所示

var t = HttpContext.Current.User.Identity.Name;
var p = HttpContext.Current.Profile;

在我的WCF服务中,我可以使用IdentityProfile,而不是ObjectDisposedException

我不知道为什么。