HTTP Basic은 서버와 클라이언트 간의 간단한 인증 절차로 사용자 이름과 비밀번호를 base64 방식으로 인코딩하여 이를 요청 헤더에 포함시켜 서버로 전달하여 서버에서 이를 통해 인증된 사용자인지 검증하게 된다. 주의할 점은 base64가 암호화가 아닌 단순 인코딩이기 때문에 보안적인 부분으로는 기대하지 않는 것이 좋다.
@RestController
public class TestController {
@GetMapping("/test/hello")
public String test1() {
return "hello";
}
}
위 코드를 이용해서 REST 엔드 포인트인 /test/hello에 접근하여 어떤 결과가 반환되는지 살펴보자.

흠... 해당 경로로 이동하니 로그인 페이지가 나왔다. 해당 로그인 페이지는 스프링 시큐리티에서 기본으로 제공하는 로그인 페이지로, 자신의 로그인 페이지를 사용하고 싶으면 따로 설정해주어야 한다. 어쨌든 지금은 이게 중요한게 아니고 /test/hello로 요청을 했더니 응답 코드로 302를 받았다. 사실 따로 접근하는 유저를 설정한 적이 없으니 인증이 되지않는 것이 당연하다. 이번에는 postman으로 실행해보자.

이번에도 뭔가 제대로 작동하지 않는 것 같다. 이번에는 직접 헤더에다 Autorization을 설정하여 다시 요청해보자.

ASCII로 인코딩 해준다. 포맷은 유저명:암호 로 설정하면 된다.

요청을 보낼 때는 Headers에 Autorization의 값으로 Basic 인코딩한문자열 을 설정해주면 된다. 응답으로 hello가 잘 출력되고 있는 것을 볼 수 있다!
콘솔에서는 curl 명령어의 -u 플래그를 이용하여 똑같은 기능을 수행할 수 있는데 윈도우에서는 그대로 사용할 수가 없다. 그래서 다음과 같이 직접 인코딩 후 헤더에 포함시키는 방식으로 동일하게 수행할 수 있다.

200 응답 코드로 내용도 hello인 것을 확인할 수 있다.
'공부 > Spring Security' 카테고리의 다른 글
| [Spring Security] CSRF 설정하기 (0) | 2024.01.10 |
|---|---|
| [Spring Security] 원하는 Filter 만들어서 사용하기 (0) | 2024.01.09 |
| [Spring Security] mvcMatchers, antMatchers, regexMatchers 대신 requestMatchers (0) | 2024.01.08 |
| [Spring Security] AuthenticationProvider 직접 구현하기 (0) | 2024.01.04 |
| [Spring Security] 기본 동작 과정 및 UserDetailsService (0) | 2024.01.03 |