Как разработать Resource Server в OAuth2.0 с использованием Java Spring Boot framework? - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь разработать сервер ресурсов, который предоставляет API, которые будут использоваться различными приложениями. Я использую java Spring Boot oauth2.0 Framework. Эти приложения представляют собой веб-приложения, которые являются типичными веб-приложениями, совместимыми с OpenID Connect, которые будут go через конечную точку / oauth / authorize, используя поток кода авторизации. Когда авторизация предоставлена, сервер авторизации возвращает маркер доступа к приложению. Затем приложение использует токен доступа для доступа к защищенному ресурсу (например, API).

Я сосредоточен на самом сервере ресурсов. Сервер авторизации находится в другом месте в облаке.

Из С точки зрения API это REST API, которые предоставляются с помощью аннотации @RestController, как показано ниже -

@RestController
@RequestMapping("/myapi")

Ниже приведены свойства, которые у меня есть в application.properties в коде моего сервера ресурсов -

spring.security.oauth2.resourceserver.jwt.jws-algorithm=RS256
spring.security.oauth2.resourceserver.jwt.issuer-uri=
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=

Основной класс выглядит следующим образом -

SpringBootApplication
@EnableResourceServer
public class myApplication {
    public static void main(String[] args) {
        SpringApplication.run(myApplication .class, args);
    }
}

и класс, который расширяет ResourceServerConfigurerAdapter

@Configuration
public class OAuth2ResourceServer extends ResourceServerConfigurerAdapter 
{

    private static final String RESOURCE_ID = "resource-server-rest-api";
    @Override
    public void configure(ResourceServerSecurityConfigurer resources) {
        resources.resourceId(RESOURCE_ID);
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/").permitAll()
            .antMatchers("/myapi/**").authenticated();
    }
}

Всякий раз, когда я вызываю API с помощью POSTMAN при передаче AccessToken в заголовке авторизации Я получаю ошибку invalid_token. Ниже приведен фрагмент журнала -

DEBUG 25536 --- [nio-8080-exec-1] p.a.OAuth2AuthenticationProcessingFilter : Authentication request failed: error="invalid_token"

Я проверил токен jwt, он имеет правильные утверждения и области применения.

Теперь вопрос

  1. Что-то отсутствует на сервере ресурсов с точки зрения кода?
  2. Являются ли свойства приложения правильными или что-то еще нужно добавить?

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

...