이번 강의에서는
Keycloak에 대해 더 자세하게 알려드리겠습니다
오픈 소스 제품이며 무료로 사용할 수 있는데
그럼에도 여러 가지 특수한 기능들이 있어
웹 애플리케이션 개발에
활용할 수가 있습니다
첫 번째로 소개드리고 싶은 것은
이 로그인 페이지를 클릭하면
지금은 Keycloak에서 기본으로 제공하는
로그인 페이지가 뜹니다
실제 웹 애플리케이션에
이러한 로그인 페이지는 사용하지 않죠
저희가 원하는 대로 편집해봅시다
저희 단체의 기준에 맞출 수 있도록
저희의 HTML, CSS 코드를 입력할 것입니다
이를 위해서는
관리자 콘솔로 가면
Realm settings의 하위로
Themes 탭이 있습니다
여기서는 로그인 페이지의 테마를
선택할 수 있습니다
계정 테마, 관리자 콘솔 테마, 이메일 테마도 있습니다
지금은 일단 로그인 테마를 봅시다
기본값인 Keycloak로 되어 있습니다
이걸 base로 변경하고 저장을 누르면
이제 4200에 있는 Angular 애플리케이션으로 돌아가겠습니다
그리고 Login 버튼을 클릭합니다
이제는 CSS, 픽처링, 배경 같은 게 없는
아주 기본적인 페이지가 나옵니다
아주 단순하고 재미없네요
Keycloak 테마로 다시 바꾸겠습니다
로그인 테마를 선택한 다음 저장하고
다시 Angular 애플리케이션에
로그인을 해서
접근을 하면
이제 Keycloak 로그인 테마가 되었습니다
자신만의 테마를 정의하고 싶다면
Keycloak의 공식 문서 사이트
keycloak.org/documentation으로 가면
이 페이지에서
Server Developer 문서를 클릭합니다
그 문서를 열고
Themes를 클릭하면
Keycloak에서 지원하는 다양한 커스터마이징 방법이 있습니다
자신의 테마를 정의하는 방법 말이죠
자신만의 테마를 정의하면
여기 나와 있는 사진과 같은 관리자 로그인 페이지도 만들 수 있습니다
그러므로 당신만의 로그인 테마를 원하신다면
이 문서를 참고해 주시면 됩니다
또 하나 질문이 있으실 수도 있을 텐데
저희는 Keycloak 인증 서버 내부에
관리자 자격 증명을 이용해 실사용자 정보
클라이언트 정보, 역할 정보를 설정하고 있습니다
하지만 이 방법은 애플리케이션이
사용자가 아주 많고
역할도 많다면 좋은 방법이 아닙니다
그래서 그런 시나리오를 위하여
Keycloak은 관리자 자격 증명을 활용한
온갖 동작과 함수의 REST API를 제공합니다
이 공식 문서 페이지에서
아래로 스크롤하면
Administration REST API라는 링크가 있습니다
Keycloak Administration REST API를 클릭하면
아주 많은 REST API가 정의되어 있습니다
예를 들어 액세스 토큰을 발급하고 싶을 때
사용하는 API가 있겠습니다
새로운 사용자를 생성하거나
새로운 역할을 생성하는 것도 있습니다
이 REST API는 전부 탐구해 보시길 부탁합니다
이런 API들은
백엔드 애플리케이션이나
UI 애플리케이션
Angular 애플리케이션
React 애플리케이션
어떤 애플리케이션에서 호출하고 싶을 때
REST API가 있으면
제약 같은 건 없습니다
이 REST API들은
어느 형태의 웹 앱에서든 사용할 수 있습니다
심지어 모바일 애플리케이션에서도
사용이 가능합니다
다음으로 공유해 드리고 싶은 정보는
Client scopes로 가시면
이것들이 지금 제 Keycloak 인증 서버에서
정의되어 있는 scope들입니다
몇 개의 scope는 기본값이 지정되어 있어서
새로운 클라이언트를 생성할 때마다
인증 서버에서 생성되고 있는
클라이언트 애플리케이션에게
이 기본값들이 할당되는 겁니다
이건 모두 OpenID 프로토콜이 지원합니다
그리고 email scope를 클릭하면
누군가 이 scope를 반환하려 할 때
어떤 필드를 얻게 되는지 알 수 있습니다
email scope의 경우 클라이언트 앱들은
이메일을 받으며
실사용자의 email verified 값도 받습니다
그리고 Settings에서는
Type을 Default Optional None 중 하나로 정할 수 있습니다
이와 같이 다른 scope도 확인할 수 있습니다
예를 들어 address는
클라이언트 애플리케이션에게
실사용자의 주소 정보
즉 도로, 지방, 우편번호, 국가 등을 제공합니다
이것들 중 실사용자에게 존재하는 건 다 알 수 있습니다
이는 Keycloak 인증 서버가 공유합니다
주소 scope에 접근할 수 있는
클라이언트 애플리케이션에게 말입니다
필요에 따라서
이 Create client scope을 이용해 scope를 생성할 수도 있습니다
그리고 커스텀 scope에서는
클라이언트 애플리케이션과 공유하고 싶은
필드가 어떤 것인지 정의할 수 있습니다
자 이제 저희가 지금까지 생성했던
클라이언트를 보시면
이 eazybankdev 릴에서
아무 클라이언트나 열어 보면
Client scope에서
특정 클라이언트에게 할당된
scope이 무엇인지 알 수 있습니다
이 페이지에서는 필요에 따라
새로운 scope를 할당하거나
존재하는 scope를 삭제할 수도 있습니다
그리고 이와 유사하게
저희는 역할의 목적에 대해서도 이야기 했습니다
역할을 생성해 보았죠
또한 사용자에 대해서도 이야기하고
실사용자 생성 방법도 알아보았습니다
또한 그룹도 생성할 수 있습니다
그룹을 모은 그룹을 만들 수도 있고
특정 집단의 사용자나
여러 명의 사용자를 그룹에 할당할 수도 있습니다
Sessions에서는
활성된 세션이 무엇인지 볼 수 있습니다
필요에 따라 세션을 무효화하거나 죽일 수 있습니다
Events가 있으면
Keycloak 인증 서버에
사용자나 관리자에 관련된 사건을
기록할 수 있습니다
이것들은 모두 Keycloak 관리자가 할 수 있는
고급 설정입니다
인증으로 돌아오겠습니다
Authentication에서는 정책을 정의할 수 있습니다
비밀번호가 만족해야 하는 조건이라든지 말이죠
OTP 정책은 무엇일까요?
필요하다면 저는
비밀번호는 8자 이상이어야 한다는
정책을 만들 수 있습니다
이 설정을 저장하고 새로운 사용자를 생성하는데
새 사용자가 비밀번호를
8자 미만으로 설정하려 하면
Keycloak은 받아들이지 않을 겁니다
그럼 사용자를 생성해 보겠습니다
Credentials에서 길이가 5자인
비밀번호를 생성하려 시도하겠습니다
12345로 할게요
하지만 이 비밀번호는 불가능합니다
비밀번호는 8자 이상이어야 한다는
정책 때문이죠
이게 Authentication 페이지의 기능입니다
비슷하게 원하는 만큼 flow와 정책을 정의할 수 있습니다
다음은 Identity providers입니다
여기서는 애플리케이션에
소셜 로그인을 추가하고 싶을 때
활용할 수 있는 것들이 있습니다
다음 강의에서는 EazyBank 애플리케이션에
GitHub의 소셜 로그인을 추가해 볼 겁니다
Identity providers의 기능이었습니다
그리고 User federation을 사용하면
Ldap 제공자나 Kerberos 제공자
또는 사용자들이 저장되어 있는
Keycloak가 아닌 다른 저장소를
설정할 수 있습니다
그게 바로 User federation의 기능입니다
Keycloak에서 제공하는 기능이
이해가 잘 되셨길 바랍니다
저도 개발자로서
이것들을 전부 배울 필요가 없다는 건 압니다
Keycloak 관리자는 개발운영 쪽 사람이 맡게 됩니다
하지만 그래도 이런 기능들을 알아두는 건
이러한 기능들을
개발운영 직원들에게 소개하고
단체 내에 적용하도록 할 수 있게 합니다
다음 강의에서는 GitHub을 이용한 소셜 로그인을
EazyBank 애플리케이션에 설치해 봅시다
들어주셔서 감사하며 다음 강의에서 뵙겠습니다
수고하셨습니다