Я пытаюсь разработать сервер ресурсов, который предоставляет 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, он имеет правильные утверждения и области применения.
Теперь вопрос
- Что-то отсутствует на сервере ресурсов с точки зрения кода?
- Являются ли свойства приложения правильными или что-то еще нужно добавить?
Нужно ли серверу ресурсов взаимодействовать с сервером авторизации во время выполнения ? Если да, где это указано?