我有一個安全令牌字符串,它是SecurityTokenServiceClient.RequestSecurityToken
調用的結果。現在我想將此安全令牌傳遞給client.ChannelFactory.CreateChannelWithIssuedToken(...)
。將安全令牌字符串轉換爲SecurityToken派生類的最簡單方法是什麼?我期望像StringSecurityToken
,但沒有看到任何。將SecurityToken字符串傳遞給CreateChannelWithIssuedToken
回答
如果您使用.Net 4.5,那麼您正在尋找的類是System.IdentityModel.Tokens.SecurityTokenHandler
或它的派生類之一。它有一個返回SecurityToken
的ReadToken(string)
方法。
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.aspx
如果知道標記的類型你會得到然後就可以直接使用適當的派生類(例如Saml2SecurityTokenHandler爲SAML令牌)。
如果你可能會得到不同類型的令牌,那麼你可以使用System.IdentityModel.Tokens.SecurityTokenHandlerCollection
類
這使你可以配置多個令牌處理程序(包括自定義的),然後讓架構選擇正確的處理程序您取決於令牌類型。
在.Net 4中,情況比較複雜,因爲ReadToken(string)方法不存在。您只能處理XML令牌。如果您的令牌是SAML,那麼確定,但如果是SWT或JWT則不那麼容易。在這種情況下,您必須定義一個基於自定義XML的SecurityToken
類型,其中嵌入了原始令牌。然後你必須寫一個自定義SecurityTokenHandler
。
還有就是這對.NET 4的樣品和SWT這裏
http://zamd.net/2010/07/31/using-wif-for-securing-rest-service/
你也許可以用類似的方式創建一個JWT一個,也許看.NET 4.5代碼作爲指導。
CreateChannelWithIssuedToken需要一個GenericXmlSecurityToken。
你可以輕鬆地通過你的字符串安全標記(可能是一個XmlReader - 忘記了詳細信息)新增一個。
- 1. 將JWT SecurityToken傳遞給WCF客戶端
- 2. 將字符串傳遞給$
- 3. 將字符串從IHttpHandler傳遞給Javascript,然後傳遞給Silverlight
- 4. 將值傳遞給查詢字符串
- 5. 將字符串傳遞給jquery函數
- 6. 將查詢字符串傳遞給rDirectory
- 7. 將REGEX字符串傳遞給re.search
- 8. 將字符串傳遞給facet_grid:ggplot2
- 9. 將字符串傳遞給Java Eclipse
- 10. 將字符串傳遞給函數
- 11. 如何將字符串傳遞給epp_dodger?
- 12. 將字符串變量傳遞給tcpClient.Connect
- 13. 將字符串傳遞給make文件
- 14. 將字符串傳遞給Asyntask
- 15. 將字符串列表傳遞給map_async()
- 16. 將字符串傳遞給dll
- 17. 將一個字符串傳遞給file.open();
- 18. 將字符串[]傳遞給javascript
- 19. 將字符串變量傳遞給marquee
- 20. 將字符串傳遞給ggplot函數
- 21. 將字符串傳遞給Java方法
- 22. 將Java字符串傳遞給Javascript
- 23. 將字符串傳遞給InetSocketAddress
- 24. 將字符串參數傳遞給SendDlgItemMessage
- 25. 將字符串傳遞給float數組?
- 26. 如何將字符串傳遞給JOptionPane?
- 27. 將C++字符串傳遞給Python
- 28. Perl:將Unicode字符串傳遞給chr()
- 29. 將字符串傳遞給onItemClick函數
- 30. 將字符串傳遞給textview
一些我不得不花費時間的事情,我希望拯救其他人:Saml2SecurityTokenHandler只定義覆蓋ReadToken(XmlReader reader)。你只能使用它,否則你會得到NotImplementedException – Maverik