Implementing Authorization Code Grant Flow in the Easy Bank Microservices Network
이번 강의에서는 Authorization Code Grant Flow를 사용하여 Gateway 서버 뒤에 있는 보안 리소스에 접근하는 방법을 살펴보겠습니다. Postman을 활용해 UI 애플리케이션이나 모바일 애플리케이션의 시나리오를 모방할 수 있습니다. 다음은 이 과정에 대한 단계별 가이드입니다.
1. Postman 설정
1.1 API 요청 준비
우선, Postman에서 세 가지 POST 요청을 생성합니다. 요청 이름 앞에 auth code
를 붙입니다.
auth code - accounts
auth code - cards
auth code - loans
1.2 인증 설정
- 각 API 요청에서 Authorization 탭을 선택하고 Type을
OAuth 2.0
으로 설정합니다.
- Header Prefix 값을
Bearer
로 유지합니다.
- Configure New Token에서 Token Name을 설정합니다. 예:
auth code_access_token
.
- Grant Type을
Authorization Code
로 선택합니다.
1.3 토큰 요청 설정
토큰 요청 설정 시 다음 정보를 입력합니다:
- Callback URL: Postman이 기본적으로 제공하는 콜백 URL을 사용합니다.
- Auth URL: Keycloak의 Authorization URL을 입력합니다.
- Access Token URL: Keycloak의 Access Token URL을 입력합니다.
- Client ID와 Client Secret: Keycloak에 설정된 클라이언트의 정보를 입력합니다.
- Scope:
OpenID email profile
로 설정합니다.
- State: CSRF 공격 방지를 위한 임의의 알파벳 숫자 조합 값을 입력합니다.
- Client Authentication:
Send Client Credentials in Body
로 설정합니다.
2. Access Token 요청
- Get New Access Token 버튼을 클릭합니다.
- 이 버튼을 클릭하면 브라우저가 열리고 Keycloak 로그인 페이지로 리디렉션됩니다.
- 브라우저에서 이미 Keycloak 관리 콘솔에 로그인한 상태라면, 해당 세션을 종료합니다.
- 브라우저에서 End User로 로그인합니다.
- 사용자 이름과 비밀번호를 입력합니다. 예:
madan
/ 12345
.
- 인증이 성공하면, Postman이 Authorization Code를 사용해 Access Token을 요청하고, 새 Access Token을 얻습니다.
- Use Token을 클릭하여 요청에 토큰을 추가합니다.
3. 권한 부족 문제 해결
- 요청이 실패하는 경우(예: 403 Forbidden), 이는 End User에게 적절한 권한이 없기 때문입니다.
- Keycloak 관리 콘솔에 접속하여 Madan 사용자에게 필요한 Roles를 할당합니다.
- Users 탭에서 Madan 사용자를 선택합니다.
- Role Mappings에서 Assign Role을 클릭하여
accounts
, cards
, loans
역할을 할당합니다.
- 다시 Postman에서 Access Token을 요청하고, 새로 얻은 토큰을 사용해 API 요청을 수행합니다.
4. 모든 API 요청 테스트
- Accounts API: Madan 사용자가
accounts
권한을 가지도록 설정한 후, 요청을 다시 보내어 성공적인 응답을 확인합니다.
- Cards API: Madan 사용자가
cards
권한을 가지도록 설정한 후, 요청을 다시 보내어 성공적인 응답을 확인합니다.
- Loans API: Madan 사용자가
loans
권한을 가지도록 설정한 후, 요청을 다시 보내어 성공적인 응답을 확인합니다.
- Fetch Customer Details API: Get 요청은 인증 없이 성공적으로 수행되어야 합니다.
5. Docker 이미지 업데이트
강의가 끝나기 전에:
1. 모든 애플리케이션을 중지합니다.
2. 각 마이크로서비스의 pom.xml
파일에서 버전 태그를 S11
에서 S12
로 업데이트합니다.
3. 새 버전의 Docker 이미지를 생성하고 Docker Compose 파일을 업데이트합니다.
이제 Authorization Code Grant Flow를 성공적으로 구현하여 Easy Bank 마이크로서비스 네트워크에서 보안 요청을 처리할 수 있습니다. 강의를 마치기 전에 모든 설정이 완료되었는지 확인하고, 다음 강의를 준비하세요.
감사합니다. 다음 강의에서 뵙겠습니다!