Я создаю свой бэкэнд с микросервисной архитектурой с использованием Spring. у меня есть сервер eureka, сервер шлюза zuul и другие микросервисы, которые взаимодействуют друг с другом через прокси-сервер feing. Что я хочу знать, так это как проверять безопасность и авторизацию только один раз для каждого запроса? что я имею в виду, если у меня есть микросервис A , который вызывает микросервис B через частную конечную точку, как проверить безопасность и авторизацию только для первого вызова микросервиса A и игнорировать безопасность для микросервиса B ? зная, что проверка безопасности должна выполняться, когда вызов является прямым для той же конечной точки микросервиса B .
, например, при аутентификации микросервис Login с общедоступной c authentication () конечная точка, вызовите микросервис Account для получения информации о пользователе через частную getUserInfo () конечную точку. в этом случае проверка безопасности должна быть проигнорирована для 2 конечных точек, потому что authentication () endpoint is publi c.
второй пример, при проверке аутентификации, Login микросервис с частной validateAuthentication () конечная точка, вызов той же частной конечной точки getUserInfo () учетной записи микросервиса. в этом случае проверка безопасности должна выполняться для конечной точки validateAuthentication () и игнорироваться для getUserInfo () конечной точки.
, зная, что getUserInfo ( ) конечная точка может быть вызвана напрямую, и в этом случае необходимо выполнить проверку безопасности.
Это мой SecurityConfig class
@Configuration
@EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter()
{
companion object
{
val PUBLIC_END_POINTS = arrayOf(
"/auth/identification"
)
}
override fun configure(http : HttpSecurity)
{
http
.cors().and().csrf().disable()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers(*PUBLIC_END_POINTS).permitAll()
.anyRequest().authenticated()
.addFilterBefore(AuthenticationFilter() , UsernamePasswordAuthenticationFilter::class.java)
}
}
, и это мой AuthenticationFilter класс
class AuthenticationFilter : OncePerRequestFilter()
{
override fun doFilterInternal(request : HttpServletRequest , response : HttpServletResponse , filterChain : FilterChain)
{
// validate token and user's info
filterChain.doFilter(request, response)
}
}
Кто-нибудь может мне помочь? я потратил много времени на поиск в inte rnet и не нашел решения ..