我使用新的4.5 WIF東西來驗證網站的用戶並確保我的MVC網站和WCF服務之間的通信安全。WIF 4.5 BootstrapContext安全令牌null
我有網站配置爲保存引導上下文,以便我可以重新使用相同的安全令牌的所有請求到服務層。
在正常情況下,所有工作正常,每個網站請求已通過身份驗證,並通過上下文使SecurityToken可用,以確保WCF呼叫的安全。
但是,如果網站應用程序域被重置(例如在開發過程中構建應用程序),對網站的任何請求仍將通過身份驗證,但SecurityToken在上下文中不再可用於傳遞給WCF調用。
調試BootstrapContext
它有4個有用的特性:
SecurityToken
SecutiryTokenHandler
Token
TokenBytes
預應用程序域復位SecurityToken和SecurityTokenHandler具有值和後復位令牌具有值。
在重置之後目光注視Token的值,它看起來像是原始的SAML XML,所以我大概可以從中補充完整的SecutiryToken,但這看起來很奇怪,我找不到任何有關文檔。
任何想法,我可以做什麼來確保SecurityToken始終可用來保存我亂搞令牌XML嗎?
更新
使用dotPeek來看看什麼是在框架的源代碼怎麼回事,我可以看到casues這種行爲的執行路徑,但我不能確定任何理由,它需要是這個樣子以及如何可以避免。
最後,我放棄了試圖解決它與現在使用下面的一段代碼,以確保我有一個令牌
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)));
}
我現在所關心的是我錯過了這背後的一些推理behaiour和我的解決方案將在某個時刻爆炸。
OWIN不一樣的WIF? – Kiquenet