Centrpized Spring Secuirty для всех API и пользователей - PullRequest
1 голос
/ 18 марта 2020

Я планирую использовать 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";
    }

Существует ли централизованный способ обеспечения безопасности пружины?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...