我在使用federatedauthentication在客户端和wcf服务应用程序之间进行通信时遇到问题。
在我的客户端应用程序(带有Forms身份验证的ASP.NET MVC)上,我将用户数据传递给声明,并构建一个SessionSecurityToken:
SessionSecurityToken sessionSecurityToken = new
SessionSecurityToken(transformedPrincipal,
TimeSpan.FromMinutes(tokenLifeTime));
sessionSecurityToken.IsReferenceMode = true;
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionSecurityToken);
tokenLifeTime等于25分钟。
在我的服务上,我想阅读cookie并获取存储在声明中的用户数据。但是,当我在我的服务上运行以下代码时:
SessionSecurityToken token;
FederatedAuthentication.SessionAuthenticationModule.TryReadSessionTokenFromCookie(out token);
令牌为空。
更新
我注意到如果我只是在客户端应用程序中创建服务,则会毫无问题地读取令牌。我也可以设置Httpcontext.Current.user,它工作正常。但是我确实希望通过服务引用来使用服务,在这种情况下,HttpContext.Current.User都是空的(但不是null!),并且上面没有读取cookie。