Имя: Пароль:
1C
 
Обмен с сторонним веб-сервисом
,
0 Classic
 
10.03.17
17:13
Народ, пните пожалуйста в правильном направлении.

Есть внешний веб-сервис, штатными WS-ссылками он не кушается. Методом выборочного удаления установил, что ругается на

    <wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; wsu:Id="UTOverTransport">
        <wsp:ExactlyOne>
            <wsp:All>
                <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">;
                    <wsp:Policy>
                        <sp:TransportToken>
                            <wsp:Policy>
                                <sp:HttpsToken RequireClientCertificate="false"/>
                            </wsp:Policy>
                        </sp:TransportToken>
                        <sp:AlgorithmSuite>
                            <wsp:Policy>
                                <sp:Basic256/>
                            </wsp:Policy>
                        </sp:AlgorithmSuite>
                        <sp:Layout>
                            <wsp:Policy>
                                <sp:Lax/>
                            </wsp:Policy>
                        </sp:Layout>
                    </wsp:Policy>
                </sp:TransportBinding>
                <sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">;
                    <wsp:Policy>
                        <sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"/>;
                    </wsp:Policy>
                </sp:SignedSupportingTokens>
            </wsp:All>
        </wsp:ExactlyOne>
    </wsp:Policy>

Если убрать этот кусок, то определяется через WSОпределения.

Без этого куска можно работать с WSОпределением и WSПрокси, но сам веб-сервис естественно ругается на отсутствие wsse:Security

У меня такие вопросы возникли:
1. Где можно наглядно посмотреть заполнение этого блока (wsse:Security). С описанием чем шифруются пароли, и что такое wsse:Nonce?
2. Где можно найти простой пример Soap запроса не штатными методами?
3. Как можно вытащить ту xmlину, которую 1С создает штатно из своих методов WS?
4. Может еще чего подскажите
1 Serginio1
 
10.03.17
17:38
1С этого не понимает.
Это из области

Практическое применение NET в 1С8 с помощью Serginio1
2 Неверный Параметр И
 
10.03.17
17:53
(1) Не, Серёж, так ты работу не найдешь.
3 Classic
 
10.03.17
18:29
Ладно, давайте другой вопрос.
Мне в xmlке надо сгенерировать некие сущности
Password, Nonce,Created
Насколько я понял это пароль с какими-то ключами.
Что это может значить?
4 Неверный Параметр И
 
10.03.17
18:49
5 Classic
 
10.03.17
18:53
(4) Это я нашел.
Я не пойму каким макаром я могу сгенерить Nonce, Created и на основании них пароль.  1Совскими средствами. стандартный 1Совский base64 ничего такого не просит.
6 Неверный Параметр И
 
10.03.17
18:58
Причем тут 1Сный base64, что он просит?
https://gist.github.com/javajack/04422d5a95d8e8dae1aa - прям видно что есть что и куда
7 Classic
 
10.03.17
19:55
(6) Видно, если на жабе писать. Сразу видно какие библиотеки подключить, чтоб тебе этот base64 сформировать. А вот как это сгенерить в 1С, мне не понятно.
8 Serginio1
 
10.03.17
20:56
9 Serginio1
 
10.03.17
20:59
10 Vlad_69
 
10.03.17
21:16
"Пусть безумная идея, вы не рубайте сгоряча".

Есть такой веб-сервис Россельхознадзора, тоже с закидонами (с абстрактными классами в схеме, такой финт 1С тоже не понимает).
Так выкручивались вот таким способом:
http://vetrf.ru/vetrf-forum/posts/list/30/6955.page#39151

Подсовывали в конфигу xsd, потом собирали ФабрикуXDTO из нескольких пакетов.

Что, если стандартное описание SOAP-Envelope сохранить локально в xsd, подсунуть в описание узла Header злополучные "сучности" Password, Nonce,Created и потом заполнять их обычными методами ФабрикиXDTO?

(Это так, навскидку...)
11 Classic
 
11.03.17
12:43
(10)
Насколько я понял из открытых источников, то 1Ска вообще не может корректно сформировать эти Password и Nonce.

Весь остальной файл я руками соберу. Мне большая тИповость не нужна.

А вот где бы найти простенький com-объект по формированию правильного нонса с пассвордом64.

В приведенном добрым человеком (4) примере видно, что даже изначальный рендомный Nonce генерится из какого-то предопределенного класса.
12 Vlad_69
 
11.03.17
18:39
Ну чтоб с дотнетом не морочиться, можно попробовать "ЖабийСкрип" задействовать:
https://github.com/vrruiz/wsse-js (например).

А дальше тривиально:
ScriptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScriptCtrl.Language = "JScript";
... и так далее
13 Classic
 
11.03.17
23:42
(12) Красавчик. А то я уже на жабе классы набросал и ищу, как их из 1С вызывать :)

А где дока по этой хрене?
14 Serginio1
 
12.03.17
09:27
Мыши плакали, кололись, но продолжали грызть кактус
15 Classic
 
12.03.17
13:27
(14) Вот честно, ничего не понятно в тех ссылках, что ты даешь. Понимаю, что что-то крутое, а вот как юзать - хз.
16 Serginio1
 
12.03.17
13:56
(15) Наверняка к этому Вэб сервису есть примеры на том же C#.

Вот и копни как создать DLL, как добавить ссылку на Вэб сервис
например

http://msdn.microsoft.com/ru-ru/library/dd492132.aspx

http://msdn.microsoft.com/ru-ru/library/bb628649.aspx
http://naviart.ru/nav-web-service-connect-from-csharp-webref

Или попроси человека, знающего C# поддключить тебе библиотеку.

Вот решения с другими Вэб сервисами
Использование классов .Net в 1С для новичков
17 Vlad_69
 
12.03.17
14:50
(13) >>А где дока по этой хрене?

По которой именно из "хреней"? :)
18 Vlad_69
 
12.03.17
16:03
Ну вот как-то так:


    ScriptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
    ScriptCtrl.Language = "JavaScript";

    ScriptFile = Новый ТекстовыйДокумент;
    ScriptFile.Прочитать("D:\WORK\wsse.js");
    ScriptSrc = ScriptFile.ПолучитьТекст();
    ScriptCtrl.AddCode(ScriptSrc);

    wsseHeader = ScriptCtrl.Run("wsseHeader", "bobik","barbos");


на выходе имеем:

UsernameToken Username="bobik", PasswordDigest="Lyikf2rBrMeuF8yFVmMfEhBQaAk=", Created="2017-03-12T16:02:50+03:00", Nonce="YjZ2M29HN2xXeTVIK2xPaUVwSFY5OEZHWStnPQ=="
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс