1

我有一个安全令牌字符串,它是SecurityTokenServiceClient.RequestSecurityToken调用的结果。现在我想将此安全令牌传递给client.ChannelFactory.CreateChannelWithIssuedToken(...). 将安全令牌字符串转换为 SecurityToken 派生类的最简单方法是什么。我期待类似的东西,StringSecurityToken但没有看到任何东西。

4

2 回答 2

1

如果您使用的是 .Net 4.5,那么您要查找的类是System.IdentityModel.Tokens.SecurityTokenHandler它的派生类或其派生类之一。它有一个ReadToken(string)返回SecurityToken.

http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandler.aspx

如果您知道您将获得的令牌类型,那么您可以直接使用适当的派生类(例如,用于 SAML 令牌的 Saml2SecurityTokenHandler)。

如果您可能会获得不同类型的令牌,那么您可以使用System.IdentityModel.Tokens.SecurityTokenHandlerCollectionclass

http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.securitytokenhandlercollection.aspx

这让您可以配置多个令牌处理程序(包括自定义处理程序),然后让框架根据令牌类型为您选择正确的处理程序。

在 .Net 4 中,情况更加复杂,因为 ReadToken(string) 方法不存在。您只能处理 XML 令牌。如果您的令牌是 SAML,则可以,但如果是 SWT 或 JWT,则不是那么容易。在这种情况下,您必须定义一个基于 XML 的自定义SecurityToken类型,其中嵌入了原始令牌。然后你必须编写一个自定义的SecurityTokenHandler.

这里有 .Net 4 和 SWT 的示例

http://zamd.net/2010/07/31/using-wif-for-securering-rest-service/

您可能可以以类似的方式创建一个 JWT,也许将 .Net 4.5 代码作为指南。

于 2013-06-23T15:13:15.713 回答
1

CreateChannelWithIssuedToken 需要 GenericXmlSecurityToken。

您可以轻松地自己新建一个,传入您的字符串安全令牌(可能作为 XmlReader - 忘记详细信息)。

于 2013-06-24T06:37:54.233 回答