지금까지 저희는
Keycloak을 이용하여
저희만의 인증 서버를 구축하는 법을 알아보았습니다
다음 단계로는
API 간 소통 시나리오를 체험해 보겠습니다
이 API 간 소통 시나리오 안에서
저희는 Postman의 도움을 받아
리소스 서버 속의 REST API들을
호출할 것입니다
이 방법을 이용할 때
저희는 REST API 커뮤니케이션을 통해
마치 두 개의 앱이 서로 상호작용하는 것처럼 꾸밀 것입니다
여기 나와 있듯이 맨 처음 단계에서는
제 Postman이 Keycloak 인증 서버로부터
액세스 토큰을 받아와야 합니다
액세스 토큰을 받았다면
그걸 리소스 서버에 전송하고
세번째 단계에서 제 리소스 서버는
액세스 토큰이 유효한지 유효하지 않은지
Keycloak 서버에게 확인받게 됩니다
액세스 토큰이 유효하다면
Postman에게 리소스 서버는
성공 신호를 보냅니다
이전에 말씀드렸던 것처럼 이 시나리오에서는
엔드 유저가 관련되지 않았을 때와
두 개의 다른 애플리케이션이
API 커뮤니케이션을 이용해
서로 소통하고 있을 때에는
저희는 grant type flow
즉 client credentials grant type flow를 사용해야 합니다
여기 보이는 게 아까 이야기했던
client credentials grant type flow입니다
참고하실 수 있도록 잠깐 보여드리겠습니다
이 flow에 엔드 유저는 없습니다
하지만 이 client credentials grant type flow를 사용하려면
먼저 인증 서버로부터
클라이언트 ID와 secret을 받아
Postman 애플리케이션이 이를 활용하여
액세스 토큰을 받을 수 있게 해야 합니다
그러므로 Keycloak 서버 내에
클라이언트 정보를 생성해 봅시다
이게 제 Keycloak 관리자 콘솔입니다
알맞은 realm인
easybankdev를 선택해야 합니다
이 realm을 선택한 후
여기 있는 clients 탭을 클릭합니다
여기서 원하는 만큼 클라이언트를 생성할 수 있습니다
저는 지금 관리자 자격을 이용해 수동으로
클라이언트를 생성하고 있습니다
하지만 실제로는 리소스 서버를 이용하고자 하는
저희의 서드 파티 애플리케이션은
단체에 요청을 하여
단체가 검토를 거친 다음
문제가 없다고 판단하여야
프로젝트 리더들이 Keycloak 관리자에게
서버 내에 이러이러한 클라이언트 정보를 생성하라고
전달할 것입니다
그런 정보가 생성되고 나서야
클라이언트의 ID와 secret이
서드 파티 애플리케이션에게 제공되어
그 애플리케이션이 당신의 애플리케이션과
소통을 시작할 수 있을 겁니다
아무튼 지금 저희는 이 버튼을 클릭하면
클라이언트를 생성할 수 있습니다
클릭해 봅시다
제가 만들고 싶은 클라이언트 유형은 OpenID Connect입니다
저희는 OAuth2와 OpenID를 모두 활용할 거기 때문입니다
OpenID Connect를 선택하고
클라이언트 ID를 직접 입력할 수 있습니다
클라이언트 ID는 easybankapi로 하겠습니다
이 클라이언트 ID를 부여하고 난 다음에는
여기를 클릭합니다
이 페이지에서 먼저 해야 하는 일은
클라이언트 애플리케이션이 액세스 토큰을 받기 위해
인증이 필요하도록 할지 정하는 겁니다
저희는 당연히 서드 파티 애플리케이션에게
클라이언트 secret을 주어
그걸로 인증을 하도록 하고 싶습니다
그러므로 Client authentication는 켜고
다음으로 Authentication flow에서는
클라이언트 애플리케이션이 호출할
증명 타입 flow가 무엇인지 정해야 합니다
저희는 Standard flow는 비활성화해야 합니다
Standard flow는 인증 코드 flow를 뜻하고
이는 엔드 유저와 관련 있는 flow이므로 지금 사용할 필요가 없습니다
비활성화 하겠습니다
이와 비슷하게 Direct access grants는
리소스 소유자 패스워드 자격 증명 타입을 뜻합니다
이 타입 역시 엔드 유저와 관련이 있으므로
활성화하지 않을 것입니다
저희는 클라이언트 자격 증명 타입 flow를
활용하고 싶기 때문에
Service accounts roles라고 쓰인 걸 활성화해야 합니다
이 물음표를 클릭하면
이걸 선택하면
클라이언트는 클라이언트 자격 증명 flow를 따르게 된다고
설명이 나옵니다
왜 Service accounts role이라고 쓰여 있나면
두 개의 다른 서비스가
서로 소통을 하려고 하기 때문에
Service accounts라고 표현한 겁니다
설정을 전부 하고 나면
Save를 클릭합니다
이제는 Credential 탭으로 갔을 때
나오는 정보는
아까 입력한 eazybankapi라는 클라이언트 ID와
클라이언트 secret입니다
그리고 역할을 설정하고 싶다면 여기서 하면 됩니다
Roles는 나중에 다루도록 하겠습니다
그래도 저희는 이제 저희 Keycloak 서버에
가장 상위 레벨의 설정은 완료된 클라이언트가 있습니다
Clients로 돌아가 보면
기본값으로 클라이언트 몇 개가 이미 생성되어 있습니다
그리고 제가 생성한 eazybankapi 클라이언트도 있습니다
여기 나와 있는 클라이언트 ID가
OpenID Connect와
다른 자격 증명을 가능하게 할 겁니다
그리고 이제는 나중에도 이 페이지를 방문해서
클라이언트 정보를 필요에 따라 변경할 수 있습니다
Keycloak 인증 서버 안에
클라이언트를 성공적으로 생성해 보았습니다
이해가 잘 되셨길 바랍니다
들어주셔서 감사하며 다음 강의에서 뵙겠습니다
수고하셨습니다