Как аутентифицировать API-ключ в Keycloak с помощью Spring SecurityJAVA

Программисты JAVA общаются здесь
Anonymous
Как аутентифицировать API-ключ в Keycloak с помощью Spring Security

Сообщение Anonymous »

Я использую keylock с последними версиями Springboot, я пытаюсь аутентифицировать пользователей с помощью API-ключа, который отправляется в заголовке так же, как jwt
Я нашел способ использовать фильтры в Spring Security, извлечь API-ключ из заголовка и проверьте ключ перед конечной точкой доступа, но это не связано с keylock, в этом процессе необходимо использовать keylock, поэтому как сгенерировать API-ключ в KeyClock и использовать этот API-ключ в заголовке каждый раз, когда клиент отправляет, и в keylock фильтра проверяет этот API-ключ, важным моментом здесь является заставить KeyClock генерировать API-ключ и играть центральную точку в этом процессе
это мой уже определенный код
ApiKeyAuthFilter.java

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

 @Component
public class ApiKeyAuthFilter extends OncePerRequestFilter {

@Value("${api.key}")
private String key;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
String apiKey = request.getHeader("X-API-KEY");

if (apiKey != null && apiKey.equals(key)) {
UsernamePasswordAuthenticationToken authentication =
new UsernamePasswordAuthenticationToken(apiKey, null,
List.of(new SimpleGrantedAuthority("ROLE_SSS")));
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authentication);
}

filterChain.doFilter(request, response);
}
}

SecurityConfig.java

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

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class SecurityConfig {

@Autowired
JwtAuthConverter jwtAuthConverter;

@Autowired
ApiKeyAuthFilter apiKeyAuthFilter;

@Bean
SecurityFilterChain resourceServerFilterChain(HttpSecurity http) throws Exception {
http.csrf(AbstractHttpConfigurer::disable)
.authorizeHttpRequests(auth -> auth.anyRequest().authenticated());
http.addFilterBefore(apiKeyAuthFilter, UsernamePasswordAuthenticationFilter.class);
http.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS));

return http.build();
}

}

но, как вы можете видеть, ключ определен в application.properties, это не поможет, я хочу, чтобы API-ключ генерировался с помощью keylock, а keylock разрешал или запрещал доступ конечных точек
поддерживает ли клавиатура этот процесс?

Подробнее здесь: https://stackoverflow.com/questions/787 ... g-security

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