2024. 9. 30. 01:51ㆍSpring Security/Spring Authorization Server
개요
샘플 구현이 끝났다.
지금까지 한 것은 샘플 레포지토리에 있는 코드를 그대로 가져다 놓고 구성요소를 살펴본 것이다.
이번 글에서는 이 서버를 실행하여 결과를 살펴본다.
리소스 서버 실행
먼저 인증 구조에서 최종 자원이 위치한 리소스 서버를 구동한다.
리소스 서버를 먼저 구동하지 않아도 괜찮지만, 인증 과정에서 요청을 받기만 하는 서버이므로 종속적이지 않아 먼저 실행한다.
아래와 같이 8090 포트로 실행된다.
인증 서버 실행
다음으로는 인증 서버를 구동한다.
인증 서버를 클라이언트 서버보다 먼저 실행하는 이유는, 클라이언트 서버의 경우 OAuth2 설정에 인증 서버를 사용하는 것으로 설정하였기 때문이다.
지난 포스팅에서 클라이언트 서버만 독립적으로 실행할 경우 실행이 되지 않음을 확인하였다.
인증 서버는 아래와 같이 실행되는데, 이때 몇가지 로그를 확인할 수 있다.
- 9000번 포트로 구동되었다.
- H2 DB 를 사용하므로, /h2-console 경로에서 DB에 접근할 수 있다.
- User 패스워드를 인코딩할 때 DefaultPasswordEncoder() 를 사용하였다. 이는 보안이 취약하다고 경고하고 있다.
클라이언트 서버 실행
다음으로 클라이언트 서버를 실행한다.
이제 인증 서버와 통신이 가능하므로 아래와 같이 실행되는데, index 페이지로 가면 환영을 받을 수 있다고 한다.
동작 확인
로그인 화면
http://localhost:8080 으로 접속해보면, 드디어 로그인 화면을 만날 수 있다.
인증 서버의 DefaultSecurityConfig 에서 테스트로 사용할 유저를 등록해 뒀었다.
Username 에 user 를, Password 에 password를 입력하면 로그인된다.
라고 할 뻔 했으나, 잘못된 로그인 정보라는 에러 문구를 만나게 된다.
Username 에 user1 을, Password 에 password를 입력하면 정말 로그인된다.
프로필 권한 동의 화면
로그인을 하면 바로 권한 동의 페이지를 만날 수 있다.
클라이언트 이름인 ‘messaging-client’ 는 인증 서버에 접근시 프로필 권한에 동의해야 하도록 설정되어 있다.
취소를 누르는 경우 주소창의 status 값이 무작위로 변경되지만, 인증 성공을 위해 프로필에 체크하고 제출한다.
Index 페이지
이제 환영 페이지를 만날 수 있다.
스프링 마크와 홈, 인증 버튼이 확인된다.
Authorize 버튼을 누르면 드롭다운으로 인증 방식을 고를 수 있다.
메시지 권한 동의 화면
인증 방식 중에 하나를 선택하면, 또다른 권한 동의 화면을 만난다.
리소스 서버의 message 를 요청하고 싶다면 아래의 권한 또한 동의해야 한다는 안내이다.
마찬가지로 동의 후 제출한다.
Get /messages
리소스 서버의 메시지 목록을 응답으로 받는 데 성공하였다.
경로상에는 grant_type=authorization_code 와 인증 성공을 의미하는 continue 가 표시된다.
client_credentials 을 사용해도 동일한 응답을 받을 수 있다.
로그아웃
로그아웃 요청시 로그아웃 메시지가 표시되며, 새로고침 할 경우 로그인 화면으로 돌아가게 된다.
결론
구현한 인증 서버가 성공적으로 작동하는 것을 확인하였다.
user1 이라는 유저가 리소스 서버에 데이터를 요청해 인증 후 응답을 받는 과정이었는데, 인증을 통과한 기록을 확인하고 싶다면?
H2 DB에 접속하는 과정을 다음 포스팅에 진행한다.
Repository
https://github.com/gigyesik/spring-authorization-server-sample/tree/clone
'Spring Security > Spring Authorization Server' 카테고리의 다른 글
[Spring Authorization Server Sample 따라 구현하기] 불필요한 코드 제거하기 (1) | 2024.10.01 |
---|---|
[Spring Authorization Server Sample 따라 구현하기] H2 DB 설정 (0) | 2024.10.01 |
[Spring Authorization Server Sample 따라 구현하기] Authorization Server (2) | 2024.09.25 |
[Spring Authorization Server Sample 따라 구현하기] Client Server (0) | 2024.09.24 |
[Spring Authorization Server Sample 따라 구현하기] Resource Server (0) | 2024.09.23 |