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