2010-03-08 69 views
2

从下面的代码片段中,我该如何摆脱(xml节点)< wsu:Expires >标记?我想摆脱它,或者把它作为一个空的元素传递出去。它是objClient.RequestSoapContext.Security.Timestamp.Expires中的只读属性。任何帮助表示赞赏。摆脱WS安全标头中的Expires节点(xml)

<wsse:Security soap:mustUnderstand="1"> 
     <wsu:Timestamp wsu:Id="Timestamp-26d09d54-10ef-4141-aa2c-11c75ed8172b"> 
      <wsu:Created>2010-03-08T15:32:16Z</wsu:Created> 
      <wsu:Expires>2010-03-08T15:37:16Z</wsu:Expires> 
     </wsu:Timestamp> 
     <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-7c9b80ec-98e9-4e41-af2e-ad37070cbdd3"> 
      <wsse:Username>bubba</wsse:Username> 
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">dsfdfsdfsfs+-dasdf=</wsse:Password> 
      <wsse:Nonce>QQ3C4HUfO2CyGx7HrjzMzg==</wsse:Nonce> 
      <wsu:Created>2010-03-08T15:32:16Z</wsu:Created> 
     </wsse:UsernameToken> 
     </wsse:Security> 

我发现和落实工作:http://blogs.msdn.com/dhrubach/archive/2008/06/16/modifying-the-security-header-generated-by-wse-runtime.aspx - 它不适合我

注意工作:使用在我上面贴的链接描述的方法仍在工作。

编辑2:我现在可以使用声明手动生成大部分头文件。如何将其插入到安全头部XML

+0

您的程序是否希望摆脱客户端到期的Web服务,还是Web服务客户端想要忽略服务器到期? – 2010-03-10 19:56:32

+0

我的服务是通过此请求的客户端。 – Developer 2010-03-10 20:07:59

+1

请问为什么要这样做?如果没有其他的话,到期是防御重放攻击的防御。 – quillbreaker 2010-03-15 22:30:25

回答

1

那么当我散列密码,我可以肯定你的问题的密码生成部分帮助。 :-)

根据the spec(线113),它是:

Base64(SHA1(nonce + created + password)) 

该文档还指出,该随机数应转换回其二进制形式,并且将所创建的时间戳应该被用作它出现(第129-131行)。

所以假设你的密码是“supercalifragilisticexpialidocious”。然后,您散列的值(给出发布在问题中的示例文档)将为UnBase64("QQ3C4HUfO2CyGx7HrjzMzg==") + "2010-03-08T15:32:16Zsupercalifragilisticexpialidocious"