Android Tomcat Digest Аутентификация - PullRequest
0 голосов
/ 18 декабря 2018

Во-первых, я новичок в Android и предполагаю, что делаю что-то не так.

Я пытаюсь использовать дайджест-проверку подлинности для сервера Apache tomcat.

Я использую библиотеку okhttp3и может совершать звонки в службу с использованием обычной аутентификации, но я не вижу, как реализовать дайджест-аутентификацию.У меня это работает в Java с использованием библиотек org.apache.http.client.HttpClient.

Разница между этими двумя заключается в том, как установлены учетные данные:

credentialProvider.setCredentials(
    new AuthScope(targetHost.getHostName(), targetHost.getPort(), "UserDatabase"),
    new UsernamePasswordCredentials(mUsername, mPassword)
);

в отличие отмоя реализация, которая в основном скопирована из okhttp3 wiki :

OkHttpClient client = new OkHttpClient.Builder()
    .authenticator(new Authenticator() {
        @Override public Request authenticate(Route route, Response response) throws IOException {
             if (response.request().header("Authorization") != null) {
                  return null; // Give up, we've already attempted to authenticate.
             }

             String credential = Credentials.basic("superuser", "superuser");
             return response.request().newBuilder()
                      .header("Authorization", credential)
                      .build();
     })
    .build();

Где AuthScope указывает контейнеру сервлета искать в области UserDatabase учетные данные для имени пользователя / пароля.

Я пытаюсь следовать: Второй ответ на этот вопрос и кажется, что большинство библиотек было изменено, или я делаю что-то еще неправильно.

Чтобы попасть в библиотеки HttpClient вэту ссылку я добавил

implementation group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

к зависимостям для приложения.

Есть ли лучший способ сделать это?

...