在我的一个应用程序中,我需要调用Web服务.Web服务使用OASIS标准。条件如下:
A)必须使用user.Signature的私钥对请求进行数字签名 包含包含X.509证书详细信息的密钥信息元素。这是必需的 用于验证签名者的服务器。必须对SOAP请求中的以下元素进行签名
时间戳
的UsernameToken
体的
B)签名后,必须使用电子归档的公钥加密请求 使用URI https://incometaxindiaefiling.gov.in/eFiling/Portal/WebServiceIncomeTaxPublicKey.cer下载公钥。 以下内容使用公钥加密 的UsernameToken 的 体的
BulkPanService Servicee = new BulkPanService();
// Create the UsernameToken we use to sign the message
UsernameToken userToken;
userToken = new UsernameToken("XXXXXX", "XXXXX", PasswordOption.SendHashed);
Servicee.SetClientCredential(userToken);
// Adds the token to the SOAP header.
SoapContext context = Servicee.RequestSoapContext;
context.Security.Timestamp.TtlInSeconds = 60000;
context.Security.Tokens.Add(userToken);
MessageSignature sig = new MessageSignature(signatureToken);
sig.SignatureOptions = SignatureOptions.IncludeTimestamp | SignatureOptions.IncludeSoapBody;
context.Security.Elements.Add(sig);
BulkPanRequest request = new BulkPanRequest();
request.uniqueRequestId = "XXXXXXXX";
FileStream stream = File.OpenRead(@"path");
byte[] fileBytes = new byte[stream.Length];
stream.Read(fileBytes, 0, fileBytes.Length);
stream.Close();
request.dataHandler = fileBytes;
// First of all create an encrypting token
X509SecurityToken encryptingToken = GetServerToken();
// Encrypt the UsernameToken element in the SOAP header
Servicee.RequestSoapContext.Security.Elements.Add(new EncryptedData(encryptingToken));
BulkPanResponse response = new BulkPanResponse();
response = Servicee.uploadBulkPan(request);
但是什么时候
Servicee.RequestSoapContext.Security.Elements.Add(new EncryptedData(encryptingToken));
行执行它抛出错误
WSE527:SecurityToken不支持数据加密。
请任何知道如何调用上述条件的网络服务的人帮我解决这个问题。