Jayakrishnan Radhakrishnan Ответов: 1

Как зашифровать 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

у меня тоже есть такая же проблема, есть ли у вас какое-нибудь решение?

1 Ответов

Рейтинг:
2

RoiveredRitesh

Здравствуйте, вы нашли какое-нибудь решение? Если да, пожалуйста, направьте меня.


Shiji lKailas

Привет

Вы нашли какое-нибудь решение? Я сталкиваюсь с той же проблемой.

Спасибо