Код: Выделить всё
@EnableWebSecurity
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests().requestMatchers("/api/protected").authenticated();
http.authorizeHttpRequests().anyRequest().permitAll();
http.oauth2Login((OAuth2LoginConfigurer config) -> {
config.redirectionEndpoint((OAuth2LoginConfigurer.RedirectionEndpointConfig redirection) -> {
redirection.baseUri("/testauth");
});
});
return http.build();
}
@Bean
public ClientRegistration clientRegistration() {
ClientRegistration cr =
ClientRegistration.withRegistrationId("discord")
.clientId("1234")
.clientSecret("abcd")
.scope(new String[]{"email", "identify"})
.authorizationUri("https://discord.com/oauth2/authorize")
.tokenUri("https://discord.com/api/oauth2/token")
.userInfoUri("https://discord.com/api/v10/users/@me")
.userNameAttributeName("username")
.clientName("Discord")
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.redirectUri("http://localhost:8082/testauth")
.build();
return cr;
}
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
// maps each ClientRepository to its registrationId
return new InMemoryClientRegistrationRepository(clientRegistration());
}
}
Код: Выделить всё
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
try {
OAuth2AuthorizationRequest authorizationRequest = this.authorizationRequestResolver.resolve(request);
if (authorizationRequest != null) {
this.sendRedirectForAuthorization(request, response, authorizationRequest);
return;
...
Он также внутри AuthorizationFilter этого не происходит - он просто отклоняет api/protected, выдавая исключение:
Код: Выделить всё
if (decision != null && !decision.isGranted()) {
throw new AccessDeniedException("Access Denied");
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -with-oaut