Как аутентифицировать 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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