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 6
75 암호화 알고리즘 스크랩   황제낙엽 2012.08.28 2956
74 RSA 암호화 알고리즘을 구현한 C++ 예제 file http://labs.jong10.com/category/cryptology  황제낙엽 2007.09.17 1295
73 OpenSSL 프로그래밍   황제낙엽 2007.09.27 1253
72 HOWTO: DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them http://info.ssl.com/article.aspx?id=12149  황제낙엽 2019.03.29 620
71 blowfish java source file http://www.angelfire.com/moon/dmp/  황제낙엽 2010.05.16 364
70 certbot docker 를 이용한 인증서 발급 및 갱신(Let's Encrypt-DNS를 통해 도메인 인증) file https://lynlab.co.kr/blog/72  황제낙엽 2020.07.14 335
69 OpenSSL Command-Line HOWTO   황제낙엽 2007.09.27 315
68 Java에서 암호화하고 C++에서 복호화하는 방법   황제낙엽 2007.09.27 304
67 RSA 공개키 암호화 알고리즘 - PHP 구현[2] file   황제낙엽 2007.09.27 301
66 해쉬 알고리즘의 종류   황제낙엽 2009.12.01 283
65 파일 해쉬 알고리즘 CRC   황제낙엽 2009.12.01 279
64 OpenSSL 을 통한 파일 암호화   황제낙엽 2007.09.27 268
63 개발용 tomcat 운용시 tomcat-users.xml 의 관리 주의   황제낙엽 2017.04.07 261
62 운영 모드 ( Mode of Operation )   황제낙엽 2013.03.07 227
61 RSA 암호화 알고리즘을 구현한 자바예제 (산술계산)   황제낙엽 2007.09.17 227
60 자바 암호화 기법 - MD5를 이용한 해쉬키 생성 (Hash)   황제낙엽 2007.09.01 215
59 RSA 공개키 암호화 방식 (java.security, javax.crypto, au.net.aba.crypto.provider 패키지 이용)   황제낙엽 2007.09.05 181
58 미연방 표준 암호 알고리즘 http://rustican.com/board/zboard.php?id=paper&no=140  황제낙엽 2010.05.21 174
57 Certificate Server의 설치 와 Client인증 http://wiki.kldp.org/wiki.php/LinuxdocSgml/OpenSSL-KLDP  황제낙엽 2007.09.27 170
56 RSA 암호화 프로그램 예제 (BigInteger 이용) file   황제낙엽 2007.09.08 168