NTLM с Spring OAuth2.0 для доступа к серверу ресурсов (REST) - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь получить доступ к некоторым ресурсам (Rest Services), защищенным с помощью OAuth2.0, из некоторого кода Java.Мы используем тип гранта Client Credentials OAuth2.0.Сервер авторизации и сервер ресурсов работают внутри сервера Microsoft IIS.Доступ к любому ресурсу на сервере Microsoft IIS дополнительно защищен аутентификацией / авторизацией NTLM.Мы делаем необходимые шаги для получения токена OAuth2.0.Для этого мы используем платформу Spring OAuth.Когда Spring делает запрос к серверу авторизации для получения токена доступа (посылая секрет клиента и идентификатор клиента), он не может пройти уровень авторизации NTLM IIS.На наш запрос к серверу авторизации мы получаем 401 (неавторизованный) ответ.

Поток:

enter image description here

Это мой класс:

public class RestTest {

private String tokenUrl = “some.url”;

private String clientId = “some.clientId”;

private String clientSecret = “some.clientSecret”;

public OAuth2RestOperations restTemplate() {
    AccessTokenRequest atr = new DefaultAccessTokenRequest();
    DefaultOAuth2ClientContext defaultOAuth2ClientContext = new DefaultOAuth2ClientContext(atr);
    OAuth2RestTemplate template = new OAuth2RestTemplate(resource(), defaultOAuth2ClientContext);

    return template;
}

protected OAuth2ProtectedResourceDetails resource() {
    ClientCredentialsResourceDetails resource = new ClientCredentialsResourceDetails();
    resource.setAccessTokenUri(tokenUrl);
    resource.setClientId(clientId);
    resource.setClientSecret(clientSecret);
    resource.setClientAuthenticationScheme(AuthenticationScheme.header);
    return resource;
}

public User getUser() {
    ResponseEntity<User> userResponseEntity = restTemplate().getForEntity(baseUrl + "/user", User.class);
    return userResponseEntity.getBody();
}}

Есть ли у вас какие-либо идеи о том, как должен выглядеть код, чтобы можно было пройти через NTLM и достичь авторизации, а затем и сервера ресурсов?

...