Помогите создать прозрачную авторизацию на сервер с помощью компонента HTTPClient
При запросе
https://сервер/api/public/core/v2.1/addresses
выдаёт
"auth": {
"tokenEndpointBasic": "https://сервер:9443/auth/app/token",
"tokenEndpointEmbedded": "https://сервер:9443/auth/nego/token"
},
При обращении по https://сервер:9443/auth/app/token и вводе логина\пароля всё пускает.
Как описать компонент для входя по второй ссылке https://сервер:9443/auth/nego/token
Этот топик читают: Гость
Ответов: 21
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 4639
Рейтинг: 755
|
|||
Вырезать адрес из ответа первого компонента и подать его на второй компонент HTTPClient вместе с данными для авторизации.
Непонятно куда именно вводятся логин и пароль при втором запросе. Имеется в виду браузер? Надо выяснить способ авторизации - Basic/Digest, тогда окно логина-пароля выдаёт браузер, а в компоненте есть соответствующие свойства. Если логин вводится на веб-странице, то нужно выловить запрос, который после этого происходит, и повторить компонентом. Также потребуется хранение куки. |
|||
карма: 26 |
|
Ответов: 21
Рейтинг: 0
|
|||
Вырезка из справки к системе:
Чтобы получить токен доступа, необходимо выполнить запрос на URL, который зависит от схемы аутентификации в сервере аутентификации. Конкретный адрес URL можно получить из ответа на запрос https://сервер/api/public/core/v2.1/addresses адресу конечной точки для получения токена с аутентификацией по встроенной схеме соответствует значение поля tokenEndpointEmbedded, а по по схеме Basic — tokenEndpointBasic. Независимо от схемы аутентификации, для получения токена необходимо отправить POST-запрос на выбранный адрес конечной точки получения токена. При использовании встроенной (Kerberos/NTLM) аутентификации обычно не требуется явно задавать учетные данные: вся необходимая информация будет получена из операционной системы для текущего пользователя. Процедура встроенной аутентификации может потребовать несколько запросов со стороны клиента. Реализации http-запросов на языках программирования с поддержкой встроенной аутентификации автоматически обрабатывают процедуру аутентификации из нескольких запросов и в качестве результата отдают ответ на последний запрос этой процедуры. При использовании данной схемы аутентификации клиентский компьютер должен быть зарегистрирован в домене, находится внутри локальной сети intranet (иметь доступ к контроллеру домена) и обращаться напрямую к адресу получения токенов доступа (без прокси серверов, так как они могут нарушить механизм аутентификации). Клиентские библиотеки, через которые осуществляется HTTP запрос должны поддерживать работу с данной схемой аутентификации (Kerberos/NTLM в зависимости от платформы). Фактически используемая схема аутентификации зависит от серверной платформы. Для ОС Windows используется NTLM аутентификация, для Linux используется Kerberos (Negotiate). ----- По схеме Basic при явном вводе логина и пароля, всё работает. Как описать с помощью компонента NTLM аутентификацию? На странице входа есть кнопка <div class="button" data-authtype="Negotiate" onclick="authWindows()" style="background-image: url(./images/pc.png)"> <div class="button-hint"> <p><b>Вход со стационарного рабочего места в локальной сети.</b></p> <div>Протокол проверки подлинности Negotiate.</div> </div> </div> Редактировалось 1 раз(а), последний 2025-02-03 10:11:33 |
|||
карма: 0 |
|
Ответов: 866
Рейтинг: 186
|
|||
rav писал(а): При использовании встроенной (Kerberos/NTLM) аутентификации обычно не требуется явно задавать учетные данные: вся необходимая информация будет получена из операционной системы для текущего пользователя. Процедура встроенной аутентификации может потребовать несколько запросов со стороны клиента. Реализации http-запросов на языках программирования с поддержкой встроенной аутентификации автоматически обрабатывают процедуру аутентификации из нескольких запросов и в качестве результата отдают ответ на последний запрос этой процедуры.
При использовании данной схемы аутентификации клиентский компьютер должен быть зарегистрирован в домене, находится внутри локальной сети intranet (иметь доступ к контроллеру домена) и обращаться напрямую к адресу получения токенов доступа (без прокси серверов, так как они могут нарушить механизм аутентификации). Клиентские библиотеки, через которые осуществляется HTTP запрос должны поддерживать работу с данной схемой аутентификации (Kerberos/NTLM в зависимости от платформы). Фактически используемая схема аутентификации зависит от серверной платформы. Для ОС Windows используется NTLM аутентификация, для Linux используется Kerberos (Negotiate). Несколько вопросов 1.Это корпоративный сервис или публичный? 2.Ты можешь зайти на эти адреса в обычном браузере? 3.Как обычно используются данные API ? Откуда берутся логин и пароль? 4.Логин и пароль совпадает с логином и паролем пользователя windows? 5.Что ты хочешь скачать, закачать, получить, увидеть или что-то другое? |
|||
карма: 18 |
|
Ответов: 4639
Рейтинг: 755
|
|||
NTLM аутентификация в компоненте не реализована. Хотя используемым API поддерживается. Можешь попробовать посмотреть в коде как реализовано.
Или используй Basic аутентификацию. |
|||
карма: 26 |
|
Ответов: 21
Рейтинг: 0
|
|||
Gunta писал(а): Несколько вопросов 1.Это корпоративный сервис или публичный? Корпоративный сервис. 2.Ты можешь зайти на эти адреса в обычном браузере? Да могу, первое открывается окно авторизации. 3.Как обычно используются данные API ? Откуда берутся логин и пароль? Веб-API построено на базе HTTP-запросов и описано в соответствии со спецификацией OpenAPI 3.0 Через браузер, два способа входа . 1 - с помощью NTLM аутентификация (логин и пароль совпадает с пользователем windows, ничего не вводишь, берутся из windows) 2 - появляется окно ввода логина и пароля (Basic аутентификация). 4.Логин и пароль совпадает с логином и паролем пользователя windows? Да. 5.Что ты хочешь скачать, закачать, получить, увидеть или что-то другое? После авторизации выполняются запросы (в виде URL ссылки) к сервису и он предоставляет информацию в виде json файла. Редактировалось 2 раз(а), последний 2025-02-04 03:35:03 |
|||
карма: 0 |
|
Ответов: 866
Рейтинг: 186
|
|||
rav, Два варианта. Не забудь вставить свою URL-ссылку.
1.
|
|||
карма: 18 |
|
Ответов: 21
Рейтинг: 0
|
|||
Создал с помощью powershell таким образом
|
|||
карма: 0 |
|
8