1. Okta
1. Okta의 관리자 페이지로 이동합니다.
Okta Application 생성
2. 왼쪽 탭에서 Applications(Applications) -> Create App Integration 을 클릭합니다.
3. Sign-in method는 SAML 2.0으로 선택합니다.
4. 등록할 App의 이름과 Logo를 등록합니다.
5. SMAL Settings에 필요한 부분을 입력합니다.
- Single Sign On URL : GitLab의 SSO URL을 입력합니다.
- ex) https://gitlab-url/users/auth/saml/callback
- Audience URI (SP Entity ID) : GitLab의 SP Entity ID를 입력합니다.
- ex) https://gitlab-url
- Name ID format : EmailAddress 형식을 선택합니다.
- Application username : Okta에서 애플리케이션에 대해 사용자 이름을 어떻게 매핑할지를 정의합니다.
- Okta username : Okta에서 사용되는 사용자 이름을 그대로 사용합니다.
- Okta username prefix : 사용자 이름의 접두사를 사용합니다.
- Email : 사용자의 이메일 주소를 사용합니다.
- Email prefix : 이메일 주소의 접두사를 사용합니다.
- Custom : 커스텀 표현식을 사용하여 사용자 이름을 설정합니다.
- (None) : 사용자 이름을 설정하지 않습니다.
- Update application username on : 애플리케이션 사용자 이름을 언제 업데이트할지를 결정합니다.
- Attribute Statements (Optional)
- 필요에 따라 사용자 Atrribute를 추가합니다. 예시) firstName, lastName, eamil 등등
6. Okta Support 팀이 애플리케이션 설정을 이해하도록 돕기 위한 추가 정보를 입력 후 설정이 모두 끝났다면 Finish를 클릭합니다.
7. View SAML setup instructions을 클릭하여 GitLab에 등록할 SSO URL, Issuer, Certificate 정보를 확인합니다.
2. GitLab 설정
1. GitLab과 Okta를 SAML(Single Sign-On)을 통해 연동하기 위한 설정
- 위 Otka에서 확인한 X.509 인증서를 okta.cert 파일로 따로 저장하여 X.509 인증서의 SHA-1 지문을 출력합니다.
- GitLab Server에서 gitlab.rb파일에 다음 내용을 자신의 환경에 맞게 수정 후 추가합니다.
# Omniauth 기능을 활성화
gitlab_rails['omniauth_enabled'] = true
# SAML을 통해 Single Sign-On(SSO)을 허용하도록 설정
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
# 자동으로 생성된 사용자를 차단(block)하지 않도록 설정
gitlab_rails['omniauth_block_auto_created_users'] = nil
# SAML을 통해 로그인하는 사용자가 기존 GitLab 사용자와 자동으로 연결되도록 설정
gitlab_rails['omniauth_auto_link_saml_user'] = true
# SAML 인증 제공자를 설정
gitlab_rails['omniauth_providers'] = [
{
# SAML 프로토콜을 사용하여 인증을 설정
"name" => "saml",
# GitLab 로그인 페이지에서 표시될 SSO 버튼의 레이블
"label" => "OktaSSO",
"args" => {
# Okta의 SAML 인증서의 지문으로 SAML 인증서의 신뢰성을 검증하는 데 사용
"idp_cert_fingerprint" => "73:A2:61:5C:FC:13:EC:06:4C:D6:13~~~",
# Okta의 SSO 엔드포인트 URL로 사용자가 GitLab에 로그인할 때 리디렉션되는 URL 설정
"idp_sso_target_url" => "https://trial-3196024.okta.com/app/trial-3196024_gitlab_1/~~~/sso/saml",
# SAML 요청을 보내는 GitLab의 고유 식별자
"issuer" => "https://{gitlab-url}}",
# SAML 응답에서 사용되는 이름 ID의 형식으로 여기서는 이메일 주소 형식을 사용
"name_identifier_format" => "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
# IdP(Identity Provider)의 Single Logout(SLO) 엔드포인트 URL을 지정 (SLO는 사용자의 세션을 모든 서비스에서 종료)
# "idp_slo_target_url" => "https://{your-idp-url}/saml/slo",
# IdP(Okta)에서 어떤 속성을 NameID로 사용할지 사용자 정의
# "name_identifier_value" => "userPrincipalName"
# Assertion Consumer Service(ACS) URL은 GitLab에서 SAML 인증 응답을 수신하고 처리하는 엔드포인트로 성공적으로 인증되면 Okta는 SAML 어서션을 ACS URL로 보내 로그인 프로세스를 완료
# "assertion_consumer_service_url" => "https://{gitlab-url}/users/auth/saml/callback",
}
}
]
gitlab-ctl reconfigure
3. Okta Group 생성 및 Application(GitLab) 연동
1. Okta 관리자 페이지에서 Directory -> Group에서 Group을 생성합니다.
- 예시) GitLab-Dpt
2. 생성한 Group에 People(USER)를 추가합니다.
3. Group의 Applications를 클릭하여 위에서 생성한 Application(GitLab)을 Assign 합니다.
4. GitLab Login 테스트
1. GitLab 화면에서 아래와 같이 OktaSSO를 클릭하여 SSO 로그인을 진행합니다.
2. Okta 페이지로 리다이렉트 되며 Okta의 유저 이름 또는 이메일로 로그인을 진행합니다.
3. 정상적으로 Login 됨을 확인합니다.
참고) 만약 다음과 같은 문구가 떴다면??
- Account is pending approval from your GitLab administrator and hence blocked 오류 확인
- 다음과 같은 문구를 확인할 수 있을건데 계정이 생성은 되었지만 Pending 상태이므로, 관리자가 확인 후 승인을 해줘야 로그인이 가능합니다.
정리
이번 포스트에서는 Okta와 GitLab 간의 SAML SSO 연동을 설정하는 방법을 다루었습니다. 이를 통해 중앙 집중식 인증 관리를 구현하고, 사용자 접근성을 높이며 보안을 강화할 수 있습니다.
질문이나 추가 도움이 필요하면 댓글 부탁드립니다. 감사합니다! 😁
'GitLab' 카테고리의 다른 글
[GitLab] Keycloak OIDC - 그룹 기반 인증 연동 설정 (w. terraform) (2) | 2024.10.13 |
---|