首页 文章

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

提问于
浏览
0

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

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

谢谢。

2 回答

  • 0

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

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

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

  • 0

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

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

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

    我不知道为什么。

相关问题