我有一个安全令牌字符串,它是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. 将字符串文字传递给C
- 4. 将字符串从IHttpHandler传递给Javascript,然后传递给Silverlight
- 5. 将字符串传递给URL。
- 6. 将字符串[]传递给javascript
- 7. 将连接字符串传递给dll?
- 8. 如何将字符串传递给epp_dodger?
- 9. 将字符串传递给ggplot函数
- 10. 将字符串传递给while循环
- 11. 将值传递给查询字符串
- 12. 将字符串传递给函数
- 13. 将字符串列表传递给map_async()
- 14. 将字符串传递给facet_grid:ggplot2
- 15. 将字符串值传递给方法
- 16. 将查询字符串传递给rDirectory
- 17. 将字符串传递给float数组?
- 18. 将字符串传递给jquery函数
- 19. 将字符串传递给make文件
- 20. 将字符串传递给onItemClick函数
- 21. 将字符串变量传递给marquee
- 22. 将字符串传递给Asyntask
- 23. 将C++字符串传递给Python
- 24. 将二维字符串传递给JTable
- 25. 将字符串传递给dll
- 26. 将字符串传递给TableAdapter
- 27. 将字符串传递给InetSocketAddress
- 28. 将REGEX字符串传递给re.search
- 29. 将多行字符串传递给宏
- 30. 将查询字符串传递给silverlight
一些我不得不花费时间的事情,我希望拯救其他人:Saml2SecurityTokenHandler只定义覆盖ReadToken(XmlReader reader)。你只能使用它,否则你会得到NotImplementedException – Maverik