Запрос на авторизацию 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 ответа
- Сделать
GET
запросhttp://localhost:8080/login
через почтальона, и он вернет вам HTML-код. Извлеките_csrf
токен из ответа. Это будет выглядеть как
<input name="_csrf" type="hidden"
value="1c470a6c-dff3-43aa-9d08-d308545dc880" />
- Выполните запрос POST следующим образом:
http://localhost:8080/login
, копируя_csrf
токен, имя пользователя и пароль как параметры формы
Обратите внимание на
JESSIONID
Cookie
значение в ответе с шага два. И это идентификатор сеансаauthenticated session
.Пока вы отправили
JESSIONID
в последующих запросах в виде файла cookie Spring Security знает, кто вы. Почтальон добавит, чтоCookie
автоматически для последующих запросов.вы можете добавить его вручную в качестве заголовка с этим заголовком cookie или обновить настройки почтальона, чтобы всегда отправлять
JESSIONID
печенье
Вам нужно будет реализовать токен JWT для этого и добавить его в заголовок запроса "Авторизация" в Postman. Вы можете посмотреть видео по безопасности Java Brains Spring на YouTube.