Spring Cloud: как направить запрос вместе с аутентификацией от шлюза к микросервису?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Cloud: как направить запрос вместе с аутентификацией от шлюза к микросервису?

Сообщение Anonymous »

У меня есть два микросервиса: Gateway и HelloWorld. Я использую базовую аутентификацию, которая происходит в микросервисе Gateway. Затем запрос перенаправляется в микросервис HelloWorld. Но вот проблема: запрос маршрутизируется, а аутентификация нет.
HelloWorld

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

@RequestMapping("/")
@RestController
public class HelloController {

@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}

@GetMapping("/secured")
public String secured(Authentication auth) {
// !!! auth == null -> NullPointerException !!!
return "This page is secured. Your role is "
+ auth.getAuthorities()
.stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(", ")) + ".";
}
}
Шлюз

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

@Configuration
@EnableWebFluxSecurity
public class WebSecurityConfig {

@Bean
public SecurityWebFilterChain securityFilterChain(ServerHttpSecurity http, ReactiveAuthenticationManager authManager) throws Exception {
return http
.authorizeExchange(request -> request
.pathMatchers("/hello").permitAll()
.pathMatchers("/secured").authenticated()
.anyExchange().permitAll()
)
.csrf(csrf -> csrf.disable())
.httpBasic(httpBasic -> httpBasic.authenticationManager(authManager))
.build();
}

// some security configuration ...
}

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

@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {

public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}

@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route(p -> p
.path("/**")
.uri("http://localhost:8081"))
.build();
}

}
Что я хочу узнать:
  • Как «отправить» аутентификацию от шлюза в другой микросервис без необходимости повторной аутентификации пользователя.
  • Обычно ли аутентифицировать пользователя в микросервисе Gateway или мне следует продублировать механизм аутентификации в все остальные микросервисы.
P.S. Пожалуйста, не отвечайте: «Вам следует использовать JWT» или что-то в этом роде. Я хочу найти решение в моей текущей ситуации (используя базовую аутентификацию). Но я буду рад получить некоторые рекомендации вместе с ответом на мои вопросы. :)

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Spring Cloud: как направить запрос вместе с аутентификацией от шлюза к микросервису?
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Соединение Docker Cloud Cloud Cloud Cloud
    Anonymous » » в форуме JAVA
    0 Ответы
    85 Просмотры
    Последнее сообщение Anonymous
  • Соединение Docker Cloud Cloud Cloud Cloud
    Anonymous » » в форуме JAVA
    0 Ответы
    68 Просмотры
    Последнее сообщение Anonymous
  • APIGateway для обработки веб-сокета и маршрутизации его к соответствующему микросервису с использованием Spring Boot 3.3
    Anonymous » » в форуме JAVA
    0 Ответы
    169 Просмотры
    Последнее сообщение Anonymous
  • Сервер Spring Cloud Gateway MVC. Можем ли мы использовать Spring MVC со шлюзом Spring Cloud?
    Anonymous » » в форуме JAVA
    0 Ответы
    114 Просмотры
    Последнее сообщение Anonymous

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