Я планирую использовать Spring Security для моей платформы как централизованный.
У меня есть сервер аутентификации, который выполняет идентификацию для авторизации. Я хочу обеспечить безопасность,
Я хочу централизовать сервер для всей авторизации, централизованный сервер будет иметь всех пользователей, роли, API, действия и контекст в базе данных.
Apigetway-> Сервер авторизации, если авторизация правильная, тогда шлюз APi-> другой микросервис
Но когда я прошел сквозь систему безопасности Spring, он имел только mvc метод и метод preAuthorize на каждом микро услуги, как показано ниже
mvc метод.
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
// Spring Security ignores URLs of static resources
web.ignoring().requestMatchers(
PathRequest.toStaticResources().atCommonLocations());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// configure login
http.formLogin()
.loginPage("/login")
.usernameParameter("account")
.passwordParameter("password")
.defaultSuccessUrl("/", true)
.permitAll();
// configure logout
http.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.permitAll()
.invalidateHttpSession(true);
// configure URL authorization
http.authorizeRequests()
.mvcMatchers("/signup").permitAll()
.mvcMatchers(HttpMethod.GET, "/issues/").hasAuthority("readIssue")
.mvcMatchers(HttpMethod.GET, "/issue/new").hasAuthority("writeIssue")
.mvcMatchers(HttpMethod.POST, "/issues/").hasAuthority("writeIssue")
.mvcMatchers("/users").hasAuthority("manageUser")
.anyRequest().authenticated();
}
Метод предварительного разрешения
@GetMapping
@PreAuthorize("@securityService.hasPrivilege('READ_USERS') OR principal.username == #model.get('email')")
public String getAccountView(ModelMap model) {
return "user/account";
}
Существует ли централизованный способ обеспечения безопасности пружины?