Как использовать Spring Security в веб-API? - PullRequest
0 голосов
/ 12 апреля 2020

Я создаю веб-API с помощью Spring Boot, где я хочу использовать Spring Security для аутентификации с помощью функции Remember-Me. Обратите внимание, я создаю Web API, а не REST API, что означает, что я не буду использовать аутентификацию на основе JWT, а буду использовать Cookies и Sessions.

По умолчанию Spring Security предоставляет страницу входа в систему и выхода из системы, которую я не использую, скорее, я создал конечную точку, где я сам аутентифицирую пользователя, используя AuthenticationManager, но я не могу использовать функцию «Запомнить меня» в Spring Security. Кажется, что Remember-Me активируется только при использовании их собственной формы для входа.

Я просто хочу знать, могу ли я использовать Spring Security, как в моем Web API, с небольшими изменениями (вход и выход из системы). пользователи сам) со всем остальным обрабатывается Spring. Если нет, есть ли другой обходной путь, или мне придется самому заново создавать функциональные возможности Remember-me?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Еще один способ преодолеть базовую c безопасность конфигурации Spring - это использовать фильтр.

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity security) throws Exception
    {
     security.httpBasic().disable();
    }
}

Или вы можете отключить автоматическую настройку Spring Security. Но это не рекомендуется.

@SpringBootApplication(exclude={SecurityAutoConfiguration.class})
0 голосов
/ 12 апреля 2020

[Аутентификация в SpringBoot]

https://spring.io/guides/tutorials/spring-boot-oauth2/ Эта ссылка содержит основы c для завершения требуемой информации об аутентификации и авторизации.

Обходной путь Вы можете просто использовать OAuth вместо OAuth2. Вы можете расширить WebSecurityConfigurerAdapter и добавить свой логин аутентификации c (сеанс, кэш или имя пользователя / пароль в зависимости от ваших предпочтений).

Да, вы также можете включить функцию запомнить меня простым изменением в своем классе. Код ниже

`@ Override
Защищенная пустота (HttpSecurity http) создает исключение {

  http.authorizeRequests().  
  antMatchers("/index", "/user","/").permitAll()  
  .antMatchers("/admin").authenticated()  
  .and()  
  .formLogin()  
  .loginPage("/login")  
  .and()  
  .rememberMe()  
  .key("rem-me-key")  
  .rememberMeParameter("remember") // it is name of checkbox at login page  
  .rememberMeCookieName("rememberlogin") // it is name of the cookie  
  .tokenValiditySeconds(100) // remember for number of seconds  
  .and()  
  .logout()  
  .logoutRequestMatcher(new AntPathRequestMatcher("/logout"));    

}` Надеюсь, это поможет

...