🚀 Keycloak
⭐ 설치
- https://www.keycloak.org/downloads : 해당 가이드에서 사용한 버전 24.0.5
⭐ Client 생성
http://<keycloak-url>:<keycloak-port>
접속 : 기본 포트 8080으로 설정됨.
- admin 계정 생성 후 로그인
- Create realm > realm 생성
- 생성한 realm > Clients > Create Client
- Client 정보 입력

- ROOT URL : jenkins url
- HOME URL : jenkins url
- Valid redirect URIs: 인증 완료 후 리다이렉트 URL
⭐ Client Scopes 수정
- Clients scopes > [ roles ]> [ realm roles ]
- Add to ID token, Add to userinfo 활성화

⭐ User에게 Role 부여
- Users 메뉴
- User 선택 > Role mapping >[Assign role] > Filter by realm roles에서 부여할 role 선택
🚀 Jenkins
⭐ 설치
- https://www.jenkins.io/download/ : 해당 가이드에서 사용한 버전 2.462.2
- 다운로드 시 설정한 port로 접근
- admin 계정 생성 후 로그인
⭐ 설정
✅ [ Dashboard > Jenkins 관리 > Plugins ]
Available plugins 탭에서 plugins 검색 후 다운로드
- Role-based Authorization Strategy
- OpenId Connect Authentication
다운로드 후 Jenkins 재시작
✅ [ Dashboard > Jenkins 관리 > System > Jenkins Location ]
Jenkins URL이 설치한 서버로 되어있는지 확인

✅ [ Dashboard > Jenkins 관리 > Security > Authentication ]
- Security Realm: Login with Openid Connect
- Client id: Clients > [Client] > Settings > Client ID
- Client secret: Clients > [Client] > Credentials > Client Secret

- Configuration Mode : Manual entry
- Token server url: token_endpoint
- issuer: issuer
- Authrization server url: authrization_endpoint
- UserInfo server url: userinfo_endpoint
- Jwks server url: jwks_uri
- End session URL for OpenID Provider: end_session_endpoint
- Scopes: openid email profile

📍 Keycloak > Realm settings > General > Endpoints > OpenID Endpoint Configuration에서 value 확인

- Advanced configuration
- User fields
- User name field name: user name token claim name
- User name field name: Full name token claim name
- Email field name: email token claim name
- Groups field name: Client scopes 에서 수정했던 realm roles의 token claim name
- Logout from OpenID Provider 활성화
- Post logout redirect URL: jenkins URL || logout 후 리다이렉트 될 URL

- Authorization: Role-Based Strategy 선택

- 입력 사항 저장
- Dashboard > Jenkins 관리 >Assign Roles
- [ Add Group ] > access-jenkins 생성 후 admin 권한 부여

🚀 테스트
- Jenkins 로그아웃 후 Jenkins 접근 시 Keycloak 로그인 페이지로 리다이렉트 되는 것을 확인할 수 있음.
- access-jenkins role을 부여한 사용자의 접근 확인
- access-jenkins role을 부여 받지 못한 사용자의 접근 확인