Apache HttpComponents HttpClient 5.0 — клиент Kerberos SPNEGO

Я пытаюсь перенести свой код HttpClient 4.x на 5.x.

Lookup<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
            .register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory(true)).build();

Но в 5.x уже нет AuthSchemeProvider, а у SPNegoSchemeFactory другой конструктор :-/


person Meex    schedule 08.06.2020    source источник


Ответы (1)


Что не так с чем-то вроде этого?

final Registry<AuthSchemeFactory> schemeFactoryRegistry = RegistryBuilder.<AuthSchemeFactory>create()
        .register(StandardAuthScheme.BASIC, BasicSchemeFactory.INSTANCE)
        .register(StandardAuthScheme.DIGEST, DigestSchemeFactory.INSTANCE)
        .register(StandardAuthScheme.NTLM, NTLMSchemeFactory.INSTANCE)
        .register(StandardAuthScheme.SPNEGO, new SPNegoSchemeFactory(
                KerberosConfig.custom()
                        .setStripPort(KerberosConfig.Option.DEFAULT)
                        .setUseCanonicalHostname(KerberosConfig.Option.DEFAULT)
                        .build(),
                SystemDefaultDnsResolver.INSTANCE))
        .register(StandardAuthScheme.KERBEROS, KerberosSchemeFactory.DEFAULT)
        .build();
person ok2c    schedule 08.06.2020
comment
Код компилируется, отлично, но я все еще получаю ошибку 401 :-/ У вас есть полная реализация клиента? - person Meex; 08.06.2020
comment
В своем вопросе вы спрашивали о переносе части кода с HC 4.x на HC 5.x. Теперь вы спрашиваете совсем о другом. SPNEGO отмечен как экспериментальный в HC. Мы, как проект, его не особо поддерживаем. - person ok2c; 08.06.2020