diadocapi-docs icon indicating copy to clipboard operation
diadocapi-docs copied to clipboard

Авторизация по сертификату

Open AndreySerp opened this issue 1 year ago • 0 comments

СтрокаСертификата = ПолучитьСертификатПоОрганизации(ОрганизацияДляАнализа, Серты); ///Это получение действующего сертификата по организации HTTPСоединение = Справочники.лдНастройкиИнтернетСоединений.СоздатьСоединение(ИмяСоединения);
НовыйЗапрос = Новый HTTPЗапрос; НовыйЗапрос.АдресРесурса = "/v3/Authenticate?type=certificate"; НовыйЗапрос.Заголовки.Вставить("Authorization","DiadocAuth ddauth_api_client_id=API-----****"); НовыйЗапрос.Заголовки.Вставить("Content-Type","application/octet-stream"); НовыйЗапрос.Заголовки.Вставить("Connection","Keep-Alive"); ТелоЗапроса = СтрокаСертификата.СертификатКриптографии.Выгрузить(); НовыйЗапрос.УстановитьТелоИзДвоичныхДанных(ТелоЗапроса); ВидЗапроса = "POST";
ОтветHTTP = HTTPСоединение.ВызватьHTTPМетод(ВидЗапроса, НовыйЗапрос); КодСостояния = ОтветHTTP.КодСостояния; Если КодСостояния = 200 Тогда ТелоОтветаДвоичныеДанные = ОтветHTTP.ПолучитьТелоКакДвоичныеДанные(); //30 80 06 09 2A 86 48 86 F7 0D 01 07 03 A0 80 30 80 02 01 00 31 82 02 30 30 82 02 2C 02 01 00 30 82 01 55 30 82 01 3E 31 15 30 13 06 05 2A 85 03 64 04 12 0A 37 37 30 37 33 32 39 31 35 32 31 1C 30 1A 06 09 2A 86 48 86 F7 0D 01 09 01 16 0D 75 63 40 74 61 78 2E 67 6F 76 2E 72 75 31 18 30 16 06 05 2A 85 03 64 01 12 0D 31 30 34 37 37 30 37 30 33 30 35 31 33 31 0B 30 09 06 03 55 04 06 13 02 52 55 31 18 30 16 06 03 55 04 08 0C 0F 37 37 20 D0 9C D0 BE D1 81 D0 BA D0 B2 D0 B0 31 19 30 17 06 03 55 04 07 0C 10 D0 B3 2E 20 D0 9C D0 BE D1 81 D0 BA D0 B2 D0 B0 31 29 30 27 06 03 55 04 09 0C 20 D1 83 D0 BB 2E 20 D0 9D D0 B5 D0 B3 D0 BB D0 B8 D0 BD D0 BD D0 B0 D1 8F 2C 20 D0 B4 2E 20 32 33 31 3F 30 3D 06 03 55 04 0A 0C 36 D0 A4 D0 B5 D0 B4 D0 B5 D1 80 D0 B0 D0 BB D1 8C D0 BD... МенеджерКриптографии = Новый МенеджерКриптографии(СтрокаСертификата.Сертификат.Программа.ИмяПрограммы, "", СтрокаСертификата.Сертификат.Программа.ТипПрограммы);
РасшифрованныйТокен=МенеджерКриптографии.Расшифровать(ТелоОтветаДвоичныеДанные,СтрокаСертификата.СертификатКриптографии); //A4 59 FC 38 35 E1 94 F2 21 9F 28 A9 59 D3 E7 DC 37 43 68 00 01 E7 CC 05 43 7C 08 66 30 00 05 C1 D3 D1 AC 7C AB 68 57 15 66 39 2B B3 3B CD 66 0C 73 12 16 99 2A B0 5E 02 31 3D 3B FF A8 D7 22 0A 41 C4 F9 23 0D 0D 28 3E AD 64 04 4F E2 BD 42 15 E9 1C 80 2D 45 EE F9 F1 B6 C5 B7 D5 11 C0 02 57 98 32 9E 59 15 4E AF 03 C6 07 9D 95 29 FE A1 2E 41 B9 18 F5 06 D8 54 08 A0 82 A5 0A 52 B6 A4 42 D1 C5 3A 2F 7E 5D B3 AB F0 79 33 1D 71 C5 02 3F B3 D6 49 35 EB D2 1F 7C AE E7 0F 63 25 D2 13 A0 D0 01 2C 6B C3 91 3F 45 3C C0 78 A6 E4 16 6E F4 1E 0B C1 64 36 2E 3C 65 3A C4 2C 9C 9D 9F 6D 99 EB 60 95 B1 76 B4 59 50 29 45 4A 58 49 1E 2B 1A 7F A8 6B 40 35 9D 9C 2B 04 29 1D 06 FE 55 DA DA 38 F3 6D 0A 67 EB FF 52 9F C4 DC 8E 08 91 A1 61 E6 C0 C4 D1 46 D6 FF 19 EF 35 EE 79 17 C5 E3 9E КодированныйТокен=Base64Строка(РасшифрованныйТокен);
КодированныйТокен = СтрЗаменить(КодированныйТокен, Символы.ВК, ""); КодированныйТокен = СтрЗаменить(КодированныйТокен, Символы.ПС, ""); КодированныйТокен = КодироватьСтроку(КодированныйТокен, СпособКодированияСтроки.КодировкаURL) ; //pFn8ODXhlPIhnyipWdPn3DdDaAAB58wFQ3wIZjAABcHT0ax8q2hXFWY5K7M7zWYMcxIWmSqwXgIxPTv%2FqNciCkHE%2BSMNDSg%2BrWQET%2BK9QhXpHIAtRe758bbFt9URwAJXmDKeWRVOrwPGB52VKf6hLkG5GPUG2FQIoIKlClK2pELRxTovfl2zq%2FB5Mx1xxQI%2Fs9ZJNevSH3yu5w9jJdIToNABLGvDkT9FPMB4puQWbvQeC8FkNi48ZTrELJydn22Z62CVsXa0WVApRUpYSR4rGn%2Boa0A1nZwrBCkdBv5V2to4820KZ%2Bv%2FUp%2FE3I4IkaFh5sDE0UbW%2FxnvNe55F8Xjng%3D%3D thumbprint=СтрокаСертификата.СертификатКриптографии.Отпечаток; //34 23 E2 9D 10 E0 3D C2 12 A5 82 1A 3B 1D AC 47 F5 A0 8E CA НовыйЗапрос = Новый HTTPЗапрос; НовыйЗапрос.АдресРесурса = "/V2/AuthenticateConfirm?token="+СокрЛП(КодированныйТокен)+"&thumbprint="+СокрЛП(thumbprint); //+"&saveBinding=true"; НовыйЗапрос.Заголовки.Вставить("Authorization","DiadocAuth ddauth_api_client_id="+СокрЛП(HTTPСоединение.Пользователь)); //НовыйЗапрос.УстановитьТелоИзДвоичныхДанных(ТелоЗапроса); ВидЗапроса = "POST";
ОтветHTTP = HTTPСоединение.ВызватьHTTPМетод(ВидЗапроса, НовыйЗапрос); КодСостояния = ОтветHTTP.КодСостояния; ТелоОтветаСтрока = ОтветHTTP.ПолучитьТелоКакСтроку();
Сообщить(КодСостояния); Сообщить(ТелоОтветаСтрока); КонецЕсли;

Ответ : //403 //ErrorCode: Auth.RndBytesNotFound (Http.Forbidden)

AndreySerp avatar Oct 08 '24 08:10 AndreySerp