5

我正在使用 System.IdentityModel 使用带有声明主体的表单身份验证对 ASP.NET MVC4 Web 应用程序中的用户进行身份验证。(基于这篇文章的代码:http: //brockallen.com/2013/01/26/replacing-forms-authentication-with-wifs-session-authentication-module-sam-to-enable-claims-aware-identity/

我的 ClaimsBasedAuthenticationService 类从 SessionSecurityToken 发出 SAM cookie,一切都很好……除了我刚才注意到它没有将会话 cookie 创建为 HTTPOnly 或要求它们需要 SSL。当我调试代码时,我可以看到 CookieHandler 对象上的这些属性在调试器中设置正确,但是创建的最终会话 cookie 根本没有标记 HTTPOnly 和 Secure 标志。

我有 web.config 行来明确地将这些设置为 true,如下所示:

<system.web>
  <httpCookies httpOnlyCookies="true" requireSSL="true" />
  <authentication mode="Forms">
     <forms ... requireSSL="true" />
  </authentication>
 ...
</system.web>
<system.identityModel.services>
  <federationConfiguration>
    <cookieHandler requireSsl="true" hideFromScript="true" />
  </federationConfiguration>
</system.identityModel.services>

有人可以告诉我是否还缺少其他东西以便将我的 FedAuth cookie 从脚本中隐藏(仅 HTTP)并需要 SSL?

4

2 回答 2

0

你得到这个工作了吗?我一直在使用基本相同的代码,一切都很好。

我看不出以下建议与任何事情有任何关系,但我唯一能建议的是设置 cookie 生命周期

<cookieHandler hideFromScript="true" requireSsl="true" persistentSessionLifetime="30" />

<forms loginUrl="/Whereever" timeout="30" requireSSL="true" />

<system.webServer>
  <modules>
    <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
  </modules>
</system.webServer>
于 2014-01-19T21:04:18.200 回答
0

我正在使用相同的实现,并且没有看到您使用 Fiddler2 的问题。但是,也许问题与您的调试工具有关?在 IE10 调试工具中,仅在首次接收到 cookie 时才会显示安全和 http only 标志。如果您使用 Chrome 调试工具进行检查,您应该会看到所有请求上正确显示的标志。

于 2013-06-13T23:39:11.940 回答