为WCF WS-Security和WSE Nonce身份验证编写WCF拦截器

时间:2013-02-22 20:10:01

标签: wcf wcf-data-services wcf-binding wcf-security

我必须编写一个WCF拦截器,它将扩展WCF行为

我的扩展程序的行为是它会为请求添加自定义标头....

自定义标题将如下所示

  <soapenv:Header>
    <wsse:Security soapenv:mustUnderstand="1"
  xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-8"
  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <wsse:Username>TeStUsErNaMe1</wsse:Username>
  <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"                  >TeStPaSsWoRd1</wsse:Password>
  <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"                  >f8nUe3YupTU5ISdCy3X9Gg==</wsse:Nonce>
  <wsu:Created>2011-05-04T19:01:40.981Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>

我写了一个CustomCredential,它会在请求中添加标题。

我的问题是如何扩展此WCF行为

正如使用CustomCredentials

我想要下面的内容

client.ChannelFactory.Endpoint.Behaviors.Remove(); client.ChannelFactory.Endpoint.Behaviors.Add(new CustomCredentials());

我的WCF拦截器中的

1 个答案:

答案 0 :(得分:0)

这是一篇关于如何做到这一点的好文章。它详细解释了它,并且在需要Nonce和Created的WS-Security Web服务上运行良好。

http://www.west-wind.com/weblog/posts/2012/Nov/24/WCF-WSSecurity-and-WSE-Nonce-Authentication