поддержка jxBrowser для SPNEGO/Kerberos

Мы рассматриваем возможность интеграции jxBrowser в наше настольное решение для обработки аутентификации с помощью IDP (Keycloak).

В этой интеграции мы хотели бы поддерживать аутентификацию Kerberos, и для этого нам потребуется поддержка SPNEGO.

Это то, что поддерживает jxBrowser? В противном случае это на дорожной карте?


person João Rebelo    schedule 16.07.2020    source источник


Ответы (1)


В JxBrowser вы можете настроить белый список авторизации HTTP-сервера, который представляет собой строку со списком URL-адресов, разделенных запятыми/точками с запятой. Эта функция позволяет использовать встроенную проверку подлинности Windows (IWA) и проверку подлинности Kerberos для перечисленных доменов. С помощью IWA Chromium может аутентифицировать пользователя на веб-сервере или прокси-сервере, даже не запрашивая у пользователя имя пользователя или пароль. Он делает это с помощью кэшированных учетных данных, которые устанавливаются, когда пользователь впервые входит в систему на компьютере, на котором работает браузер. IWA поддерживается только для вызовов Negotiate и NTLM.

Метод HttpAuthPreferences.serverWhitelist() позволяет указать, какие серверы должны быть добавлены в белый список для встроенной аутентификации. По умолчанию встроенная аутентификация включается только при запросе аутентификации от прокси-сервера или сервера, который находится в этом разрешенном списке. Если этот список не задан, движок Chromium попытается определить, находится ли сервер во внутренней сети, и только после этого будет отвечать на запросы IWA. Если сервер определяется как Интернет, то запросы IWA от него будут игнорироваться.

Метод HttpAuthPreferences.delegateWhitelist() указывает серверы, которым Chromium может делегировать полномочия. Если этот список не установлен, Chromium не будет делегировать учетные данные пользователя, даже если сервер определен как интрасеть.

Если вы указываете несколько имен серверов в списках, разделяйте их запятыми. Подстановочные знаки (*) разрешены.

Пример

Предположим, что IIS работает на 127.0.0.1. Для сервера была включена проверка подлинности NTLM/Negotiate.

По умолчанию сервер отвечает 401 Unauthorized. После добавления 127.0.0.1 в белые списки аутентификация проходит без дополнительных запросов.

engine.network().httpAuthPreferences().serverWhitelist("http://127.0.0.1");
engine.network().httpAuthPreferences().delegateWhitelist("http://127.0.0.1");

Мы не тестировали это решение с проверкой подлинности Kerberos, поскольку у нас пока нет необходимой инфраструктуры, но вы можете попробовать использовать этот подход для настройки сервера и делегирования белых списков с адресами, использующими проверку подлинности Kerberos. Пожалуйста, попробуйте этот подход и дайте мне знать, если он поможет.

person Vladimir    schedule 20.07.2020