Использование JWT и x509 весной - PullRequest
1 голос
/ 28 мая 2020

Мне нужно реализовать как JWT, так и x509 в Spring. В основном сценарий был бы следующим:

  • пользователь пытается ввести конечную точку, скажем, /info Для этого он должен предоставить JWT, и если у него его нет (или он недействителен), сертификат x509 будет должны быть представлены, чтобы идентифицировать себя
  • после того, как убедится, что такой пользователь действительно существует, новый JWT будет сгенерирован и передан пользователю, чтобы он затем мог представить себя с ним при запросе упомянутой /info конечной точки

Я не хочу запрашивать сертификат x509 в каждом запросе - сразу после истечения срока действия JWT или в случае его отсутствия

Теперь я реализовал получение JWT (работает нормально) и аутентификацию пользователей с x509 (работает нормально) отдельно, но у меня проблемы с соединением этих двух вещей для совместной работы, как задумано.

Часть JWT:

http
   .cors()
   .and().csrf().disable()
   .exceptionHandling().authenticationEntryPoint(authEntryPointJwt).and()
   .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
   .and()
   .addFilter(new JwtAuthenticationFilter(authenticationManager()))
   .addFilter(new JwtAuthorizationFilter(authenticationManager(), userService))
   .authorizeRequests()
   .antMatchers("/auth/**").permitAll()
   .antMatchers("/**").authenticated();

x509 часть:

http
   .authorizeRequest()
   .anyRequest()
   .authenticated()
   .and()
   .x509()
   .subjectPrincipalRegex("XX=(.*?)")
   .userDetailsService(userDetailsService());
...