sitelink1 https://www.baeldung.com/keycloak-custom-login-page 
sitelink2  
sitelink3  
sitelink4  
extra_vars5  
extra_vars6  

sitelink1 의 해외 문서를 가져다가 자동 번역기를 돌려서 자신의 포스팅인것 마냥 올려놓은 사용자를 발견하였다.

물론 번역된 문서의 말미에 출처가 있지만... 자신의 스크랩 북처럼 사용하려는건지 어떤건지...

문제는 해당 사용자의 블로그가 광고로 도배된터라 문서 보기가 참 거시기하다는거다. (광고 없이 문서 공유좀 하믄 안되나? 거 얼마나 번다고... 쯧)

게다가 원본 문서는 최근까지도 갱신이 이뤄지고 있어(Last updated: January 8, 2024) 내용과 첨부 이미지들이 카피한 문서와 차이가 있다.

이런 저런 이유로 광고없는 문서를 계속 참조하기 위해 여기에 번역기로 돌린 내용을 기록해 둔다.

 

 

1. 개요

Keycloak은 웹 또는 모바일 애플리케이션의 인증 및 승인 요구 사항을 관리하는 데 사용되는 타사 인증 서버입니다.

기본 로그인 페이지를 사용하여 앱을 대신하여 사용자를 로그인합니다.

 

이 튜토리얼에서는 Keycloak 서버의 로그인 페이지를 사용자 정의하여 다른 모양과 느낌을 가질 수 있는 방법에 중점을 둘 것입니다.

독립형 서버와 내장형 서버 모두에 대해 이를 살펴보겠습니다.

 

이를 위해 Keycloak 튜토리얼에 대한 사용자 정의 테마를 기반으로 구축하겠습니다 .

 

2. Standalone Keycloak Server 사용자 정의

사용자 정의 테마 의 예를 계속해서   먼저 독립형 서버를 살펴보겠습니다.

 

2.1. 관리 콘솔 설정(Admin Console Settings)

서버를 시작하려면 Keycloak 배포판이 보관된 디렉터리로 이동하고 bin 폴더에서 다음 명령을 실행해 보겠습니다.

 

kc.[sh|bat] start-dev --spi-theme-static-max-age=-1 --spi-theme-cache-themes=false --spi-theme-cache-templates=false

 

서버가 시작되면 위 명령 덕분에 변경 사항이 반영되었는지 확인하기 위해 페이지를 새로 고치기만 하면 됩니다.

 

이제 theme/custom 디렉토리 내에 login 이라는 새 폴더를 생성해 보겠습니다.

작업을 단순하게 유지하기 위해 먼저 themes/keycloak/login 디렉토리 의 모든 내용을 여기에 복사하겠습니다.

이는 기본 로그인 페이지 테마입니다.

 

그런 다음 관리 콘솔(admin console) 로 이동하여 관리자 계정 자격 증명을 입력하고 realm의 Themes tab으로 이동합니다.

 

keycloak-themes-1.jpg

 

로그인 테마에 대해 사용자 정의를 선택하고 변경 사항을 저장하겠습니다 .

해당 세트를 사용하여 이제 몇 가지 사용자 정의를 시도할 수 있습니다.

하지만 그 전에 기본 로그인 페이지를 살펴보겠습니다 .

 

keycloak-default_login_page.jpg

 

2.2. 사용자 정의 추가

이제 배경을 변경해야 한다고 가정해 보겠습니다.

이를 위해 login/resources/css/login.css를 열고 class 정의를 변경합니다.

 

.login-pf body {

    background: #39a5dc;

    background-size: cover;

    height: 100%;

}

 

 

효과를 확인하려면 페이지를 새로 고치세요.

 

keycloak-login_page_bg_change.jpg

 

다음으로 사용자 이름과 비밀번호의 라벨을 변경해 보겠습니다.

 

이를 위해서는 theme/login/messages 폴더에  message_en.properties 라는 새 파일을 생성해야 합니다 .

이 파일은 지정된 속성에 사용되는 기본 메시지 번들을 재정의합니다.

 

usernameOrEmail=Enter Username:

password=Enter Password:

 

 

테스트하려면 페이지를 다시 새로고침하세요.

 

login_page_label_change.jpg

 

전체 HTML 또는 그 일부를 변경하고 싶다면 Keycloak이 기본적으로 사용하는 freemarker 템플릿을 재정의해야 합니다.

로그인 페이지의 기본 템플릿은 base/login 디렉터리에 보관됩니다.

 

"SPRINGBOOTKEYCLOAK" 대신 "WELCOME TO BAELDUNG" 이 표시되기를 원한다고 가정해 보겠습니다 .

 

이를 위해서는 base/login/template.ftl을 custom/login 폴더 에 복사해야 합니다 .

 

복사된 파일에서 다음 줄을 변경합니다.

 

<div id="kc-header-wrapper" class="${properties.kcHeaderWrapperClass!}">

    ${kcSanitize(msg("loginTitleHtml",(realm.displayNameHtml!'')))?no_esc}

</div>

 

 

To:

 

<div id="kc-header-wrapper" class="${properties.kcHeaderWrapperClass!}">

    WELCOME TO BAELDUNG

</div>

 

 

이제 로그인 페이지에 영역 이름 대신 사용자 정의 메시지가 표시됩니다.

 

3. Embedded Keycloak Server 사용자 정의

여기서 첫 번째 단계는 standalone server에 대해 변경한 모든 아티팩트를 내장된 인증 서버의 소스 코드에 추가하는 것입니다.

 

이제 다음 내용으로 src/main/resources/themes/custom 내에 새 폴더 로그인을 만들어 보겠습니다 .

 

folder_Structure.jpg

 

 

이제 우리가 해야 할 일은 영역 정의 파일인 baeldung-realm.json 에 지침을 추가하여 사용자 정의가 로그인 테마 유형에 사용되도록 하는 것 입니다.

 

"loginTheme": "custom",

 

 

우리 서버가 로그인 페이지의 테마 파일을 어디서 가져올 수 있는지 알 수 있도록 이미 사용자 정의 테마 디렉토리 로 리디렉션했습니다.

 

테스트를 위해 로그인 페이지를 살펴보겠습니다 .

 

loginpage_embedded-768x654.jpg

 

보시다시피 배경, 레이블 이름, 페이지 제목 등 독립형 서버에 대해 이전에 수행된 모든 사용자 정의가 여기에 표시됩니다.

 

4. Keycloak 로그인 페이지 우회

기술적으로 비밀번호 또는 직접 액세스 권한 부여 흐름을 사용하여 Keycloak 로그인 페이지를 완전히 우회할 수 있습니다 .

그러나 이 부여 유형은 전혀 사용하지 않는 것이 좋습니다.

 

이 경우 인증 코드를 얻은 다음 대가로 액세스 토큰을 받는 중간 단계가 없습니다.

대신 REST API 호출을 통해 사용자 자격 증명을 직접 보내고 응답으로 액세스 토큰을 얻을 수 있습니다.

 

이는 사실상 로그인 페이지를 사용하여 사용자의 ID와 비밀번호를 수집하고 클라이언트 ID와 비밀번호와 함께 이를 토큰 엔드포인트에 대한 POST를 통해 Keycloak으로 보낼 수 있음을 의미합니다.

 

 

그러나 Keycloak은 기억하기, 비밀번호 재설정, MFA 등 다양한 로그인 옵션 세트를 제공하므로 이를 우회할 이유가 거의 없습니다.

 

5. 결론

이 튜토리얼에서는 Keycloak의 기본 로그인 페이지를 변경하고 사용자 정의를 추가하는 방법을 배웠습니다 .

 

우리는 독립형 인스턴스와 임베디드(standalone and an embedded) 인스턴스 모두에서 이를 확인했습니다.

 

마지막으로 Keycloak의 로그인 페이지를 완전히 우회하는 방법과 그렇게 하지 않는 이유에 대해 간략하게 살펴보았습니다.

 

언제나 그렇듯이 소스 코드는 GitHub에서 사용할 수 있습니다. 독립 실행형 서버의 경우 튜토리얼 GitHub 에 있고, 포함된 인스턴스의 경우 OAuth GitHub 에 있습니다 .

번호 제목 sitelink1 글쓴이 날짜 조회 수
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의   황제낙엽 2024.02.02 5
74 Client ID, Client Secret (Credential) 에 대하여   황제낙엽 2024.03.11 2
73 OAuth 2.0 의 등장, 구성 요소, 인증 과정 file https://blog.naver.com/dsz08082/223024950520  황제낙엽 2024.03.11 3
» Customizing the Login Page for Keycloak (Keycloak 로그인 페이지 사용자 정의) file https://www.baeldung.com/keycloak-custom-login-page  황제낙엽 2024.02.04 30
71 Access & Refresh token file https://letsmakemyselfprogrammer.tistory...sh%20token  황제낙엽 2024.02.03 2
70 OAuth 2.0 Client Types 별 Flow (인증 프로세스) file   황제낙엽 2024.02.02 2
69 [스프링 시큐리티 OAuth2] KeyCloak 실습 (Postman, Servlet) file   황제낙엽 2024.02.02 12
68 docker keycloak 에 ssl 적용 결과 후기   황제낙엽 2024.02.01 31
67 docker keycloak 에 ssl 적용하기 위한 학습용 포스팅 모음   황제낙엽 2024.01.31 12
66 Keycloak 설치 관련 레퍼런스들 (with docker) https://www.keycloak.org/downloads  황제낙엽 2024.01.22 4
65 docker 를 이용하여 keycloak 실행 환경을 구축하는 포스팅 모음 (docker compose 포함)   황제낙엽 2024.01.22 10
64 KeyCloak 을 활용하여 사용자 인증을 처리하는 과정에 대한 포스팅 모음   황제낙엽 2024.01.20 3
63 [POST/2020.11.10] KeyCloak의 REST API 이용해서 JWT 발급과 검증 file https://oingdaddy.tistory.com/198  황제낙엽 2024.01.20 1
62 SAML roles 에 대하여   황제낙엽 2024.01.20 2
61 무료 Authorization Server 솔루션   황제낙엽 2024.01.18 3
60 Keycloak 에 대하여   황제낙엽 2024.01.18 3
59 OAuth2 구글(Google), Github, 카카오(Kakao), 네이버(Naver) 로그인 API 목록 https://choiseokwon.tistory.com/389  황제낙엽 2023.12.17 5
58 Spring Authorization Server 관련 포스트 목록과 인프런 강의   황제낙엽 2023.12.07 2
57 [POST/2023.05.22] OAuth 2.1 Authorization Server (Spring Security) 구축 후기 file https://tech.kakaopay.com/post/spring-oa...-practice/  황제낙엽 2023.12.03 3
56 OAuth 와 JWT 내용 정리 (개념 정의 및 적용 전략) file https://seungwoolog.tistory.com/95  황제낙엽 2023.12.03 3