我正在迁移一个使用 Active Federation 和 WIF 3.5 的 ASP.Net 站点以使用 .Net 4.5。Windows Identity Foundation (WIF 3.5) 的功能现已完全集成到 .Net 4.5 框架中。
由于类已移至三个不同的名称空间,因此主要是机械翻译问题。我遇到问题的部分是GenericXmlSecurityToken
将 STS 发布的内容转换为 Claims Principal 以调用SessionAuthenticationModule.WriteSessionTokenToCookie
. 缺少文档,我只需要找到 WIF 4.5 访问方式FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers
以下是在 WIF 4.5 中无法编译的 WIF 3.5 代码片段(为简洁起见,省略了 WSTrust 通道创建):
var genericToken = channel.Issue(rst) as GenericXmlSecurityToken;
var handlers = FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers;
var token = handlers.ReadToken(new XmlTextReader(new StringReader(genericToken.TokenXml.OuterXml)));
var identity = handlers.ValidateToken(token).First();
var sessionToken = new SessionSecurityToken(ClaimsPrincipal.CreateFromIdentity(identity),
TimeSpan.FromMinutes(20));
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken);