我有一个使用WIF身份验证的MVC4 C#项目。我在具有负载平衡的服务器上遇到问题。 当负载均衡器后面的服务器发生变化时,我收到一个错误,正在访问其中一个声明。
这很奇怪,因为我没有失去我经过身份验证的事实。这表明我的cookie已进入新服务器,但由于某种原因缺少声明。
我正在添加这样的声明:
((ClaimsIdentity)HttpContext.User.Identity).AddClaim(new Claim("TheClaimName", "TheClaimValue"));
我认为声明本身可能不会持久存在于Cookie中。我如何“保存”这个?
这是我的配置文件。
<system.identityModel>
<identityConfiguration>
<audienceUris>
<add value="uri:someValue" />
</audienceUris>
<certificateValidation certificateValidationMode="None" />
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<trustedIssuers>
<add thumbprint="AAAA3A088B9D2010333890138D64C2E66169DEEE" />
</trustedIssuers>
</issuerNameRegistry>
<securityTokenHandlers>
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
</identityConfiguration>
</system.identityModel>
<system.identityModel.services>
<federationConfiguration >
<cookieHandler requireSsl="true" name=".myCookieName" hideFromScript="true" path="/" domain="myDomain.com"/>
<wsFederation passiveRedirectEnabled="true" issuer="https://login.server.com/issue/wsfed" realm="uri:someValue" requireHttps="true" />
</federationConfiguration>
</system.identityModel.services>