Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 04.02.2019, 15:24   #1
AlexeyU
Новичок
 
Регистрация: 04.02.2019
Сообщений: 1
Репутация: 10
Подмигивание Soap usernametoken + passworddigit

Добрый день!
Вопрос простой, но у меня не получилось разобраться, формирую Soap запрос, но в нем аутентификация usernametoket + pasword digit, я все делаю по спецификации, как мне кажется правильно, но не получается добиться ответа от сервера. Если есть у кого -нибудь примеры с формированием секции wss в xml программно, поделитесь пожалуйста.
Да использую XE8, кусок кода прилагаю.

Первый пример с использованием библиотеки Chilkat
Код:
password := 'secret';

crypt := CkCrypt2_Create();
CkCrypt2_putHashAlgorithm(crypt,'SHA-1');
CkCrypt2_putEncodingMode(crypt,'base64');

//  Generate a 16-byte random nonce
prng := CkPrng_Create();
bd := CkBinData_Create();
CkPrng_GenRandomBd(prng,16,bd);

//  Get the current date/time in a string with this format: 2010-06-08T07:26:50Z
dt := CkDateTime_Create();
CkDateTime_SetFromCurrentSystemTime(dt);
created := CkDateTime__getAsTimestamp(dt,False);
CkBinData_AppendString(bd,created,'utf-8');

//  This example wishes to calculate a password digest like this:
//  Password_Digest = Base64 ( SHA-1 ( nonce + created + SHA-1(password) ) )

//  First SHA-1 digest the password...
passwordSha1 := CkCrypt2__hashStringENC(crypt,password);
//  Append the 20 binary bytes of the SHA1 hash to bd, which already contains the nonce and created date/time.
CkBinData_AppendEncoded(bd,passwordSha1,'base64');

passwordDigest := CkCrypt2__hashBdENC(crypt,bd);

Memo1.Lines.Add('Base64 password digest = ' + passwordDigest);

CkCrypt2_Dispose(crypt);
CkPrng_Dispose(prng);
CkBinData_Dispose(bd);
CkDateTime_Dispose(dt);
Второй пример
Код:
  shaHash:= TIdHashSHA1.Create;

  try
    httpRequest := TstringList.Create; // список строк
    //
    DateTimeToString(formattedDateTime, 'yyyy-mm-dd"T"hh:nn:ss.zzz"Z"', Now);  //ShowMessage(formattedDateTime);
    Memo_applog.Lines.Append('Create:' + formattedDateTime);

    //
    CreateGUID(MyGUID); gUid := GUIDToString(MyGUID); //ShowMessage(gUids);
    //gUids := 'Example-1';

    Memo_applog.Lines.Append('UsernameToken: ' + gUid);

    //
    nonce := TIdEncoderMIME.EncodeBytes(ToBytes(gUid ,enUTF8)); //,16));

    //nonce := TIdEncoderMIME.EncodeBytes(ToBytes('133216548413'));  //ShowMessage(nonce);
    Memo_applog.Lines.Append('Nonce: ' +nonce);
    //

    //string passwordDigest = Convert.ToBase64String(sha1Hasher.ComputeHash(Encoding.UTF8.GetBytes(phrase + createdStr + userToken.Password)
    passDigest := TIdEncoderMIME.EncodeBytes(shaHash.HashBytes(ToBytes(gUid + formattedDateTime + 'Password')));



    //////bPassword:=shaHash.HashBytes(ToBytes('Password'));
    //Memo_applog.Lines.Append(BytesToString(bPassword,IndyTextEncoding_UTF8));
    //
    userName := 'user';
    //Memo_applog.Lines.Append(userName);
    Memo_applog.Lines.Append('UserName: ' + userName);

    //
    //bStr:=ToBytes(gUids + formattedDateTime); //TimeToStr(Now, 'tt', 'yyyy-mm-ddThh:nn:ss.zzzZ')); // '2015-09-07T11:34:50Z');
    //bStr:= ToBytes((gUids + formattedDateTime + 'Diat44141aFb'),enUTF8); //TimeToStr(Now, 'tt', 'yyyy-mm-ddThh:nn:ss.zzzZ')); // '2015-09-07T11:34:50Z');

    ///bStr:= ToBytes(gUid ,enUTF8);
    ///AppendBytes(bStr, ToBytes(formattedDateTime,enUTF8));
    ///AppendBytes(bStr, ToBytes('Diat44141aFb',enUTF8));


    //ToBytes((gUids + formattedDateTime + 'Diat44141aFb'),enUTF8);

    //AppendBytes(bStr, ToBytes('Diat44141aFb'));//bPassword);
    //////passDigest := TIdEncoderMIME.EncodeBytes(shaHash.HashBytes(bStr));

    //passDigest :=  BytesToString(bStr,IndyTextEncoding_UTF8);

    Memo_applog.Lines.Append('PasswordDigit: ' + passDigest);
AlexeyU вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Qt SOAP bumb Qt и кроссплатформенное программирование С/С++ 5 13.03.2013 13:37
SOAP vprsc C# (си шарп) 0 06.12.2012 00:17
SOAP 1.2 C++ korolcov C/C++ Сетевое программирование 0 02.11.2012 14:08
SOAP + PHP kostet PHP 2 17.06.2010 11:55


21:48.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru