|
Digest аутентификация в 1с8.2 | ☑ | ||
---|---|---|---|---|
0
AlexTambov197
19.05.17
✎
15:02
|
Добрый день. Есть у кого то наработки по Digest аутентификация в 1с 8.2.
Делаю запрос на сервер приходит ответ: С кодом 401. Из ответа беру параметр "nonce". Далее шифрую и добавляю ответ. Делаю новый запрос но все равно код 401. Результат = Соединение.Получить(HTTPЗапрос,файлответа); Ответ = Результат.Заголовки.Получить("WWW-Authenticate"); вычисляю параметр нонс2 из строки ответа А1 = MD5("логин:параметрреалм:пароль"); А2 = MD5("GET:ресурс"); ОтветМД5 = MD5(А1+":"+нонс2+А2); HTTPЗапрос.Заголовки.Вставить(Ответ+",response="""+ОтветМД5+""""); делаю запрос код все равно 401. |
|||
1
oleg_km
19.05.17
✎
15:10
|
А разве HTTPСоединение не умеет из коробки делать авторизацию?
|
|||
2
AlexTambov197
19.05.17
✎
15:17
|
(1) Digest видимо нет.
|
|||
3
oleg_km
19.05.17
✎
15:46
|
(2) Переходите на .NET, там все есть
|
|||
4
AlexTambov197
19.05.17
✎
16:28
|
(3) Удалось реализовать такое решение. Кому интересно пишите. скину код.
|
|||
5
oleg_km
19.05.17
✎
16:38
|
(4) У меня есть наоборот решение - проверка Digest на стороне 1С в HTTP-сервисе. Т.е. в IIS настроено анонимное подключение, а мой код на 1С формирует нужные заголовки, чтобы клиент прошел авторизацию
|
|||
6
coder1cv8
19.05.17
✎
16:44
|
А что там сложного?... Если без подробностей, то вот:
Токен = ПолучитьТокен(Сервер,Ресурс); Ответ = ПолучитьХеш(ПолучитьХеш(Пользователь + ":" + Область + ":" + Пароль) + ":" + Токен + ":" + ПолучитьХеш("POST:" + Ресурс)); Заголовки = Новый Соответствие; Заголовки.Вставить("Authorization","Digest username="""+Пользователь+""" realm="""+Область+""", nonce="""+Токен+""", uri="""+Ресурс+""", response="""+Ответ+""""); Заголовки.Вставить("Content-Type","multipart/form-data; boundary="+Разделитель); Соединение = Новый HTTPСоединение(Сервер); Запрос = Новый HTTPЗапрос(Ресурс,Заголовки); Запрос.УстановитьТелоИзСтроки(СформироватьТелоЗапроса(Разделитель,ПутьКФайлу),,ИспользованиеByteOrderMark.НеИспользовать); Ответ = Соединение.ОтправитьДляОбработки(Запрос); |
|||
7
oleg_km
19.05.17
✎
17:51
|
(6) А кто сказал что есть сложности? Товарищ похвалился, что сделал авторизацию на стороне клиента, а я - на стороне сервера. Кто-то будет искать, наткнется нас и спросит, если будет надо. Ты выложил код - тоже молодец. Я могу добавить тебе код сервера - запилишь статью на ИС.
|
|||
8
AlexTambov197
21.05.17
✎
19:05
|
(6) Да беда была в том что алгоритм был немного другой. помимо nonce в ответ нужно было добавить номер запроса и случайное число с клиента. Шифровал при помощи
"capicom". Спасибо за код с методом POST. До этого не работал с HTTP соединениями в 1с(не доводилось) и инфы по этой теме не очень а теперь пробел заполнен всем спасибо еще раз. |
|||
9
bmazniy
09.06.17
✎
15:30
|
(4) Алекс если вам не сложно, можете мне показать ваш код целиком?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |