C#Webservice Client独立计算每个安全标头元素

时间:2016-03-24 13:14:32

标签: c# xml web-services

我正在尝试手动创建一个soap信封并尝试创建安全标头,如下所示。由于Web服务服务器端的严格命名空间验证,请求始终失败并出现无效安全标头错误。在C#.NET中是否有一种方法可以逐行形成整个Signature元素。以下是我期待的输出XML。

debug=false

## *****Put file name in quotes******
declare -a arr=("UF19905217" "UG19905218" )

##Put date in DDMMYYYY format for the date the message was original processed.
DATE="25082015"

## now loop through the above array
for i in "${arr[@]}"
do
    #if "$debug; then
        echo "Fix file named: Inbound_$i.msg"
        MSG="Inbound_$i.msg"
    #fi

    if [ ! -d "$MSG" ]; then
    # Enter what you would like changed here.  You can copy and paste this command for multiple changes

        #DATATYPE
        printf "%s\n" ',s/<DataType>EDI<\/DataType>/<DataType>830<\/DataType>/g' wq | ed -s  /data1/Inbound/$DATE/$MSG        

        echo "Complete"
    else
            echo "Message not found or errored!"
    fi

done

1 个答案:

答案 0 :(得分:0)

通常这应该由一些基础设施代码完成,例如WCF客户端绑定(或旧的WSE扩展)或其他一些Ws-Security库。

https://msdn.microsoft.com/en-us/library/ms977327.aspx

但如果必须,可以使用System.Security中的SignedXml类。

https://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.signedxml(v=vs.110).aspx

您需要遵循严格的工作流程(元素引用,转换,规范化,哈希算法,密钥算法,密钥类型),它通常取决于设置规则的服务。

这些特性实际上是大多数开发者世界讨厌 SOAP并开始使用REST的原因。