2012-11-22 22 views
24

Web sitesi kullanıcılarının kimliklerini doğrulamak ve MVC web sitem ile WCF servisleri arasındaki iletişimi sağlamak için yeni 4.5 WIF malzeme kullanıyorum.WIF 4.5 BootstrapContext güvenlik belirteci null

Web sitesi, önyükleme bağlamını kaydedecek şekilde yapılandırıldı, böylece hizmet katmanındaki tüm istekler için aynı güvenlik belirtecini yeniden kullanabilirim.

Normal koşullar altında, her web sitesi isteği doğrulanmış ve WCF çağrılarını güvence altına almak için SecurityToken içerik üzerinden kullanılabilir. Bununla birlikte, web sitesi uygulama alan adının sıfırlanması (örneğin, geliştirilirken uygulamanın oluşturulması) yine de web sitesine yapılan herhangi bir talebin doğrulanacağını ancak WTF çağrılarına geçmek için SecurityToken'ın bağlamda artık mevcut olmadığını varsayar. Bkz.

ayıklama BootstrapContext o 4 faydalı özelliklere sahiptir:

SecurityToken 
SecutiryTokenHandler 
Token 
TokenBytes 

Öncesi uygulama alanı SecurityToken ve SecurityTokenHandler değerlere sahip sıfırlayın ve sonrası Jetonu bir değere sahip sıfırlayın.

Sıfırlamadan sonra Token değerini gözetleyin, bu ham SAML XML olduğundan, tam bir SecutiryToken'i muhtemelen rehidre edebilirim ancak bu, hakkında herhangi bir belge bulamadığım garip davranışlar gibi görünüyor.

SecurityToken'i sağlamak için ne yapmam gerektiğine dair herhangi bir fikir, bana belirteci XML ile uğraşmam için her zaman kullanılabilir mi?

Güncelleme çerçevesi kaynak kodunda ne olup bittiğini ben bu davranışı casues yürütme yolunu görebiliyordu ama herhangi nedenini belirlemek olamazdı azından böyle olması gerekiyordu neden aramaya dotPeek kullanma

ve nasıl engellenebilirdi. Sonunda

ben bu işe ve şimdi sağlamak için aşağıdaki kod parçasını kullanmaya çalışıyor vazgeçti bir belirteç

if (context.SecurityToken != null) 
{ 
    token = context.SecurityToken; 
} 
else if (context.Token.IsNotEmpty()) 
{ 
    var handlers = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers; 
    token = handlers.ReadToken(new XmlTextReader(new StringReader(context.Token))); 
} 

Ya ben bu arkasında bazı mantık kaçırmış yaklaşık şimdi endişeliyim behaiour ve yukarıdaki fikrim bir noktada patlayacak.

+0

OWIN aynı değil WIF? W3wp.exe'yi öldürmek için – Kiquenet

cevap

4

Aynı konuda tökezledim. Jetonun xml gösteriminin ve SecurityToken öğesinin boş olması için Token'i görüyorum. Ayrıca w3wp.exe öldürerek bu çoğaltmak için gerçekten kolay olduğunu fark ettim.

+0

+ 1 – Josh

0

Microsoft'tan ClaimsAwareWebFarm örneğini uygularken aynı sorunu yaşadım. Sorun web.config için bu bölümü eklediğinizde ortaya çıkar:

<caches> 
    <sessionSecurityTokenCache type="CacheLibrary.SharedSessionSecurityTokenCache, CacheLibrary"> 
     <!--cacheServiceAddress points to the centralized session security token cache service running in the web farm.--> 
     <cacheServiceAddress url="http://localhost/SecurityTokenCacheService/SessionSecurityTokenCacheService.svc" /> 
    </sessionSecurityTokenCache> 
    </caches> 

bu geçici çözüm için size Matt ederiz!

1

Fedauth çerezi dahil olmak üzere tarayıcı çerezini silerek sorunu çözdüm. Bir kez hata ayıklandıktan sonra tüm gerekli değerleri elde edebildim