Как зашифровать SOAP-запрос с помощью открытого ключа
Всем привет,
В одном из моих приложений мне нужно вызвать веб-службу.Веб - сервис использует стандарт OASIS. Условия заключаются в следующем:
А ) запрос должен быть подписан цифровой подписью с использованием закрытого ключа пользователя.Подпись
включите ключевой информационный элемент, содержащий сведения о сертификате X. 509.Это необходимо для
сервер для проверки подписывающего лица.Нижеприведенные элементы в запросе SOAP должны быть подписаны
Отметка времени
С usernametoken
Тело
Б) после подписания запрос должен быть зашифрован с использованием открытого ключа электронной заявки
Используйте 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: The SecurityToken does not support data encryption..
Пожалуйста, все, кто знает, как вызвать веб-сервис с вышеуказанным условием, помогите мне разобраться в этой проблеме.
Спасибо
rahulmane811
у меня тоже есть такая же проблема, есть ли у вас какое-нибудь решение?