мы используем AWS Cognito для Oauth2. Наш пользовательский интерфейс построен на Angular. Когда мой пользователь входит в систему, я инициирую вызов Cognito для получения токена авторизации. Я использую код авторизации с PKCE для получения токена от Cognito. После получения токена от Cognito я звоню в службу REST Spring Boot. При вызове службы Spring Boot из Angular я отправляю токен в заголовке Authorization как токен «Bearer».
Вот мой ResourceServerConfiguration.java:
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
private static final String RESOURCE_ID = "resource-server-rest-api";
private static final String SECURED_READ_SCOPE = "#oauth2.hasScope('openid')";
private static final String SECURED_WRITE_SCOPE = "#oauth2.hasScope('openid')";
private static final String SECURED_PATTERN = "/**";
@Override
public void configure(ResourceServerSecurityConfigurer resources) {
resources.resourceId(RESOURCE_ID);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.requestMatchers()
.antMatchers(SECURED_PATTERN).and().authorizeRequests()
.antMatchers(HttpMethod.POST, SECURED_PATTERN).access(SECURED_WRITE_SCOPE)
.anyRequest().access(SECURED_READ_SCOPE);
}
}
При вызове службы REST мой Angular UI получает HTTP-ответ 401 со следующим сообщением об ошибке:
DEBUG o.s.s.o.p.a.OAuth2AuthenticationProcessingFilter - Authentication request failed: error="invalid_token", error_description="Invalid access token: eyJraWQiOiIy.......
- Есть идеи, почему я получаю invalid_token?
- Делает ли Spring вызов Cognito для проверки токена?
- Я НЕ храню токен в моем слое REST. Это требуется?
- Я включил DEBUG, используя logging.level.root = DEBUG. Но я не вижу описательного сообщения в выводе. Как мне решить эту проблему?
Заранее благодарим за любую помощь в решении этой проблемы.