2012-11-21 13 views
13

Kullanmak için Active Federation ve WIF 3.5 kullanan bir ASP.Net sitesini geçiriyorum. Net 4.5. Windows Kimlik Vakfı'nın (WIF 3.5) işlevselliği şimdi .Net 4.5 Framework'e tamamen entegre edilmiştir.WIF 4.5'teki SecurityTokenHandlers koleksiyonuna nasıl ulaşırım?

Sınıflar üç farklı ad alanına taşındığından, çoğunlukla bir mekanik çeviri meselesidir. Sorun yaşadığım kısım, STS tarafından verilen GenericXmlSecurityToken'un SessionAuthenticationModule.WriteSessionTokenToCookie numaralı çağrıya ilişkin Talep Müdürüne tercüme edilmesidir.

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); 
: dokümantasyon eksik ve ben sadece burada FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers

erişmek için WIF 4.5 yolunu bulmalıyız (kısaca geçilmiştir WSTrust kanal oluşturma) WIF 4.5 derleme değil WIF 3.5 kod snippet'idir

cevap

14

Düzeltme oldukça basit çıktı (hemen açık değilse).

FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers 

FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers 

sadece diğer değişiklik new ClaimsPrincipal(identity) ile ClaimsPrincipal.CreateFromIdentity(identity) fabrika yöntemi çağrısı yerine olduğu gibi WIF 4.5 çevirir. *** Ne *** ad *** ve *** montaj -

var handlers = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers; 

var token = handlers.ReadToken(new XmlTextReader(new StringReader(genericToken.TokenXml.OuterXml))); 
var identity = handlers.ValidateToken(token).First(); 

var sessionToken = new SessionSecurityToken(new ClaimsPrincipal(identity), 
              TimeSpan.FromMinutes(20)); 

FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken); 
+1

'FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers': Aşağıda

çalışma snippet'tir? Ayrı bir derleme olan – Kiquenet

+0

@Kiquenet 'System.IdentityModel.Services' –

İlgili konular