티스토리 뷰

WEB

Keycloak 시작하기 3

마시멜로co. 2025. 2. 3. 14:54

1. keycloak에 DB 연동하기 (PostgreSQL)

https://www.keycloak.org/downloads

 

downloads - Keycloak

Keycloak is a Cloud Native Computing Foundation incubation project © Keycloak Authors 2024. © 2024 The Linux Foundation. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Founda

www.keycloak.org

 

keycloak 공식 홈페이지에서 keycloak 다운로드합니다.

다운로드한 keycloak 폴더의 압축을 풉니다.

 

 

기본 포트값은 8080인데 변경하려면 conf/keycloak.conf 파일을 실행하여 아래와 같이 작성합니다.

http-port=9090

 

 

https://www.keycloak.org/getting-started/getting-started-zip

 

OpenJDK - Keycloak

From a terminal, open the keycloak-26.1.0 directory. Enter the following command: On Linux, run: On Windows, run: Using the start-dev option, you are starting Keycloak in development mode. In this mode, you can try out Keycloak for the first time to get it

www.keycloak.org

 


관리자 창을 열어 실행합니다.

cd C:\keycloak-26.0.7\keycloak-26.0.7
bin\kc.bat start-dev

 

 

익스플로러를 실행하여 127.0.0.1:9090을 실행합니다.

 

keycloak은 java h2 db를 사용하고 있습니다. 그러나 자체적으로 데이터베이스를 관리하기 위해 postgres 데이터베이스를 설치합니다.

 

https://www.postgresql.org/download/

 

PostgreSQL: Downloads

 

www.postgresql.org

 

다운로드받은 postgres 설치파일을 실행하여 postgresql을 설치합니다.

 

dbeaver를 설치합니다.

https://dbeaver.io/download/

 

Download | DBeaver Community

Download DBeaver Community 24.3.4 Released on February 2nd 2025 (Milestones). It is free and open source (license). Also you can get it from the GitHub mirror. System requirements. DBeaver PRO 24.3 Released on December 16th, 2024 PRO version website: dbeav

dbeaver.io

 

 

dbeaver를 실행하여 설치한 postgres를 연결합니다.

 

Database Navigator에서 마우스 우측 클릭 > Create > Connect 클릭

 

postgreSQL 선택

 

postgres 설치시 입력한 db 비밀번호 입력 후 Test Connection.. 버튼 클릭 (show all databases 체크)

 

연결 성공 메시지를 확인했다면 확인 버튼 클릭 후 완료합니다.

 

Database에 마우스 우측 클릭 > Create New Database 버튼을 클릭합니다.

 

keycloakdb라는 데이터베이스를 생성합니다.

 

생성 완료 확인

 

 

 

다시 Keycloak 폴더의 conf/keycloak.conf 파일을 수정합니다.

 

db = postgres

db-username=postgres

db-password= postgres 설치시 입력한 비밀번호

db-url=jdbc:postgresql://localhost:5432/keycloakdb

 

명령프롬프트 창을 열어 keycloak 개발자 모드를 실행합니다.

cd C:\keycloak-26.0.7\keycloak-26.0.7
bin\kc.bat start-dev

 

익스플로러 창을 열면 다시 관리자 사용자를 추가하라는 화면이 나옵니다.

 

dbeaver 창을 열어 확인해보면 테이블이 추가된 것을 확인 할 수 있습니다.

 

 

익스플로러 화면에서 관리자 사용자를 추가한 후 create user 버튼을 클릭합니다.

 

 

Open Administration Console 버튼을 클릭합니다.

 

생성한 관리자 아이디와 패스워드로 로그인합니다.

 

2. 검색 엔드포인트 이해하기

 

keycloak realm을 추가합니다.

 

Configure 항목의 Realm settings 메뉴를 클릭합니다.

하단의 Endpoints 을 확인하면 OpenID Endpoint Configuration , SAML 2.0 Identity Provider Metadata 2가지가 있습니다.

 

 

OpenID Endpoint Configuration 을 클릭하면 아래와 같은 화면이 나타납니다.

 

OIDC 검색 (OpenID Connect Discovery) 명세는 OIDC 신뢰자 (Relying Party) 라이브러리의 상호 운용성과 가용성 측면에서 모두 중요합니다. 해당 명세가 없는 경우 OpenID 제공자로 인증할 수 있도록 애플리케이션에서 많은 메뉴얼 설정을 수행해야합니다. 

 

OIDC 검색 명세는 OpenID 제공자가 구현 여부를 결정할 수 있는 선택 명세입니다. 다행히 Keycloak을 포함한 대부분의 OpenID 제공자는 해당 명세를 구현합니다. 

OpenID 제공자에 대한 base URL( 보통 issue url)을 알기만 하면 신뢰자는 제공자에 대한 유용한 정보를 많이 검색할 수 있습니다. 

<base URL>/.well-known/openid-configuration 에서 표준 엔드포인트인 OpenID 제공자 메타데이터를 로드해 해당 작업을 수행합니다. 

 

  • issuer : Keycloak은 멀티 테넌시 multi-tenancy를 지원하기 때문에 Keycloak 인스턴스의 각 영역을 분리하기 위해 사용됩니다.
  • authorization_endpoint : 인증 요청을 위한 URL
  • token_endpoint : 토큰 요청을 위한 URL
  • introspection_endpoint : 점검 요청을 위한 URL 
  • userinfo_endpoint : UserInfo 요청을 위한 URL
  • grant_types_supported : 지원 가능한 승인 유형 리스트
  • response_types_supported : 지원 가능한 응답 유형 리스트

 

[인가코드흐름]

 

① 사용자가 애플리케이션의 로그인 버튼을 클릭합니다.

② 애플리케이션이 인증 요청을 생성합니다.

③ 인증 요청은 302 리다이렉트 형식으로 사용자에게 전송되며, user-agent에게 keycloak에서 제공하는 인가 엔드포인트로 리다이렉트되도록 알려줍니다.

④ User-agent는 인증 요청을 통해 애플리케이션에서 명시한 쿼리 파라미터를 사용해 인가 엔드포인트를 요청합니다.

⑤ Keycloak은 사용자에게 로그인 페이지를 표시합니다. 사용자는 사용자이름과 패스워드를 입력하고 해당 양식을 제출합니다. 

⑥ Keycloak은 사용자의 자격 증명을 검증한 다음 애플리케이션에게 제공할 인가 코드를 생성합니다. 

⑦ 애플리케이션은 인가 코드를 ID 토큰과 리프레시 토큰으로 교환합니다.

 

 

 

'WEB' 카테고리의 다른 글

Keycloak 시작하기 2  (0) 2025.01.23
Keycloak 시작하기 1  (0) 2025.01.21
vis.js 네트워크 라이브러리 및 샘플코드 다운로드  (0) 2024.09.27
[PWA] Vue.js + Express + MySQL 연동 2  (12) 2021.01.06
[PWA] Vue.js + Express + MySQL 연동 1  (10) 2021.01.05
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크