Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
AndreySerp opened this issue Oct 8, 2024 · 0 comments
Open

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

AndreySerp opened this issue Oct 8, 2024 · 0 comments

Comments

@AndreySerp
Copy link

СтрокаСертификата = ПолучитьСертификатПоОрганизации(ОрганизацияДляАнализа, Серты); ///Это получение действующего сертификата по организации
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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant