Миграция с Spring Boot 2.2 на 3.2 и с Java 8 на Java 21 – проблемы при обновлении до Spring Authorization ServerJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Миграция с Spring Boot 2.2 на 3.2 и с Java 8 на Java 21 – проблемы при обновлении до Spring Authorization Server

Сообщение Anonymous »

В настоящее время я занимаюсь переносом приложения с Java 8 на Java 21 и с Spring Boot 2.2 на Spring Boot 3.2.
В настоящее время я сталкиваюсь с проблемами безопасности. Мое приложение имеет как сервер авторизации, так и сервер ресурсов, который использует Spring Security oauth2 версии 2.0.10 для целей аутентификации и авторизации.
Зависимость, которую я использовал для этого, была

Код: Выделить всё

        
org.springframework.security.oauth
spring-security-oauth2
2.0.10.RELEASE

Мой класс сервера авторизации такой:

Код: Выделить всё

import java.util.Arrays;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.oauth2.common.exceptions.OAuth2Exception;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
import org.springframework.security.oauth2.provider.token.TokenEnhancerChain;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter {

private static final String GRANT_TYPE_PASSWORD = "password";
private static final String AUTHORIZATION_CODE = "authorization_code";
private static final String REFRESH_TOKEN = "refresh_token";
private static final String IMPLICIT = "implicit";
private static final String SCOPE_READ = "read";
private static final String SCOPE_WRITE = "write";
private static final String TRUST = "trust";
private static final int ACCESS_TOKEN_VALIDITY_SECONDS = 1 * 60 * 60;
private static final int FREFRESH_TOKEN_VALIDITY_SECONDS = 6 * 60 * 60;

@Value("${auth.server.client.id}")
private String clientId;

@Value("${auth.server.client.secret}")
private String clientSecret;

@Value("${auth.server.signing.key}")
private String signingKey;

@Autowired
private AuthenticationManager authenticationManager;

@Autowired
private CustomTokenEnhancer customTokenEnhancer;

@SuppressWarnings("unused")
@Autowired
private DataSource dataSource;

@Bean
public JwtAccessTokenConverter accessTokenConverter() {
JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
converter.setSigningKey(signingKey);
return converter;
}

@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(accessTokenConverter());
}

@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {

security.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()")
.passwordEncoder(new BCryptPasswordEncoder());
}

@Override
public void configure(ClientDetailsServiceConfigurer clientDetailsServiceConfigurer) throws Exception {
clientDetailsServiceConfigurer.inMemory().withClient(clientId)
.secret(new BCryptPasswordEncoder().encode(clientSecret))
.authorizedGrantTypes(GRANT_TYPE_PASSWORD, AUTHORIZATION_CODE, REFRESH_TOKEN, IMPLICIT)
.scopes(SCOPE_READ, SCOPE_WRITE,  TRUST).accessTokenValiditySeconds(ACCESS_TOKEN_VALIDITY_SECONDS)
.refreshTokenValiditySeconds(FREFRESH_TOKEN_VALIDITY_SECONDS);

}

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {

TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
tokenEnhancerChain.setTokenEnhancers(Arrays.asList(customTokenEnhancer, accessTokenConverter()));

endpoints.tokenStore(tokenStore()).tokenEnhancer(tokenEnhancerChain)
.authenticationManager(authenticationManager).exceptionTranslator(e -> {
if (e instanceof OAuth2Exception oAuth2Exception) {
return ResponseEntity.status(oAuth2Exception.getHttpErrorCode())
.body(new OAuth2Exception(oAuth2Exception.getMessage()));
} else {
throw e;
}
});
}

}

Я не смог найти подходящего решения для обновления этого сервера до нового сервера авторизации Spring со специальным усилителем токенов и преобразователем токенов jwt.
Есть ли способ включить его в новый Сервер авторизации Spring?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ssues-upgr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»