我正在尝试手动创建一个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
答案 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的原因。