Как программно использовать обычную аутентификацию в WebView — JavaFX

Я разрабатываю приложение JavaFX и пытаюсь использовать WebView для доступа к веб-приложению. Это веб-приложение имеет базовую аутентификацию, и я хочу отправить учетные данные программно (не хочу запрашивать у пользователя его учетные данные, они хранятся в приложении JavaFX, я знаю последствия этого подхода для безопасности).

Единственная ссылка, которую я нашел в гугле, это:

https://community.oracle.com/message/12518017

Пока нет ответов.


person Pablo Andrés Martínez Vargas    schedule 23.11.2015    source источник


Ответы (2)


На самом деле мы пробовали подход с использованием Authenticator, и это сработало.

URI baseUri = URI.create("https://my.company.com/");
String username = "";
String password = "";

Authenticator.setDefault(new Authenticator() {

    @Override
    public PasswordAuthentication getPasswordAuthentication() {
        // only return our credentials for our URI
        if (baseUri.getHost().equals(getRequestingHost())) {
            return new PasswordAuthentication(username, password.toCharArray());
        }
        return null;
    }
});
person Dirk Fauth    schedule 28.02.2017
comment
Прекрасно работает вместе с JavaFX WebView! :-) - person Steffen; 14.12.2018

Если вам просто нужно добавить заголовок авторизации, вы можете использовать метод webEngine.setUserAgent(), чтобы добавить любой нужный вам заголовок.

Например, для базовой авторизации вы должны добавить заголовок следующим образом:

webEngine.setUserAgent("foo\nAuthorization: Basic YourBase64EncodedCredentials");

Хакерское решение, которое я знаю, но я не смог найти другого способа установить заголовок.

person Brandon Thorne    schedule 30.06.2017
comment
Хаки, но вы не одиноки в его использовании: twitter.com/CodingFabian/status/524942996748652544 - person David; 24.09.2019