Я переношу сайт ASP.Net, который использует Active Federation и WIF 3.5 для использования .Net 4.5. Функциональность Windows Identity Foundation (WIF 3.5) теперь полностью интегрирована в .Net 4.5 Framework.
Поскольку классы переместились в три разных пространства имен, это в основном вопрос механического перевода. Часть, с которой у меня возникают проблемы, заключается в переводе GenericXmlSecurityToken
, выпущенном STS, к Принципу претензий для вызова SessionAuthenticationModule.WriteSessionTokenToCookie
. Документация отсутствует, и мне просто нужно найти способ WIF 4.5 для доступа к FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers
Вот фрагмент кода WIF 3.5, который не компилируется в WIF 4.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);