Запрос на авторизацию Spring Security из собственного приложения Postman

Я изучаю / изучаю модули безопасности Spring, реализуя их через REST API.

Чтобы проверить влияние, мы используем собственное приложение Postman в качестве клиента отдыха.

@RestController
@RequestMapping("/auth")
public class Employee {

    @GetMapping("/status")
    public ResponseEntity<String> getStatus()
    {
        ResponseEntity<String> responseEntity = new ResponseEntity<>("Resource is fetched", HttpStatus.OK);


        return responseEntity;
    }

}

выше - кусок ресурса ради потребления. а ниже - фрагмент кода для настройки аутентификации и авторизации.

@EnableWebSecurity
public class AppSecurityConfiguration extends WebSecurityConfigurerAdapter {


    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("ashish").password("{noop}admin").roles("USER")
                .and().withUser("foo").password("{noop}foo").roles("ADMIN");

    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/auth/status").hasRole("ADMIN").and()
        .formLogin()
        ;
    }

    @Bean
    public PasswordEncoder getPasswordEncoder()
    {
        return PasswordEncoderFactories.createDelegatingPasswordEncoder();
    }

}

Теперь указанный выше код авторизации работает нормально при попытке в браузере - он использует страницу входа в систему Spring по умолчанию. однако я не совсем понимаю, как выполнить / проверить то же самое через почтальона.

в методе protected void configure(HttpSecurity http) я попытался удалить formLogin(), это не сработало. Я добавил httpBasic - тоже не сработало.

в почтальоне я использую базовую аутентификацию.

во время поиска в Интернете я наткнулся на несколько действительно хороших статей, но почти все они используют какую-то технологию пользовательского интерфейса, такую ​​как angular или thymleaf, чтобы продемонстрировать концепцию, которую мне трудно понять.

Ниже я ссылаюсь на видеоуроки, чтобы узнать о Spring Security.

https://www.youtube.com/watch?v=payxWrmF_0k&list=PLqq-6Pq4lTTYTEooakHchTGglSvkZAjnE&index=6&t=0s

Заранее спасибо! Ашиш Параб

2 ответа

Решение
  1. Сделать GET запрос http://localhost:8080/loginчерез почтальона, и он вернет вам HTML-код. Извлеките_csrfтокен из ответа. Это будет выглядеть как
   <input name="_csrf" type="hidden" 
          value="1c470a6c-dff3-43aa-9d08-d308545dc880" />
  1. Выполните запрос POST следующим образом: http://localhost:8080/login, копируя _csrf токен, имя пользователя и пароль как параметры формы

  1. Обратите внимание на JESSIONID Cookieзначение в ответе с шага два. И это идентификатор сеансаauthenticated session.

  2. Пока вы отправили JESSIONIDв последующих запросах в виде файла cookie Spring Security знает, кто вы. Почтальон добавит, чтоCookie автоматически для последующих запросов.

  3. вы можете добавить его вручную в качестве заголовка с этим заголовком cookie или обновить настройки почтальона, чтобы всегда отправлять JESSIONID печенье

Вам нужно будет реализовать токен JWT для этого и добавить его в заголовок запроса "Авторизация" в Postman. Вы можете посмотреть видео по безопасности Java Brains Spring на YouTube.

Другие вопросы по тегам