GitLab Dedicated용 OpenID Connect SSO
Offering: GitLab Dedicated
GitLab Dedicated 인스턴스에 대해 OpenID Connect(OIDC) 단일 로그인(SSO)을 구성하여 ID 공급자로 사용자를 인증합니다. 다음과 같은 경우에 OIDC SSO를 사용합니다: 이는 GitLab Dedicated 인스턴스의 최종 사용자를 위한 OIDC를 구성합니다.
GitLab Dedicated 인스턴스에 대해 OpenID Connect(OIDC) 단일 로그인(SSO)을 구성하여 ID 공급자로 사용자를 인증합니다.
다음과 같은 경우에 OIDC SSO를 사용합니다:
- 기존 ID 공급자를 통해 사용자 인증을 중앙 집중화하려는 경우.
- 사용자를 위한 비밀번호 관리 오버헤드를 줄이려는 경우.
- 조직의 애플리케이션 전반에 걸쳐 일관된 액세스 제어를 구현하려는 경우.
- 광범위한 업계 지원이 있는 최신 인증 프로토콜을 사용하려는 경우.
이는 GitLab Dedicated 인스턴스의 최종 사용자를 위한 OIDC를 구성합니다. Switchboard 관리자를 위한 SSO를 구성하려면 Switchboard SSO 구성을 참조하십시오.
OpenID Connect 구성#
사전 요건:
- ID 공급자를 설정합니다. GitLab이 구성 후 콜백 URL을 제공하므로 임시 콜백 URL을 사용할 수 있습니다.
- ID 공급자가 OpenID Connect 사양을 지원하는지 확인합니다.
GitLab Dedicated 인스턴스에 OIDC를 구성하려면:
-
지원 티켓에 다음 구성을 제공합니다:
{ "label": "Login with OIDC", "issuer": "https://accounts.example.com", "discovery": true } -
지원 팀이 액세스할 수 있는 시크릿 관리자에 대한 임시 링크를 사용하여 클라이언트 ID 및 클라이언트 시크릿을 안전하게 제공합니다.
-
ID 공급자가 자동 검색을 지원하지 않는 경우 클라이언트 엔드포인트 옵션을 포함합니다. 예를 들어:
{ "label": "Login with OIDC", "issuer": "https://example.com/accounts", "discovery": false, "client_options": { "end_session_endpoint": "https://example.com/logout", "authorization_endpoint": "https://example.com/authorize", "token_endpoint": "https://example.com/token", "userinfo_endpoint": "https://example.com/userinfo", "jwks_uri": "https://example.com/jwks" } }
GitLab이 인스턴스에 OIDC를 구성한 후:
- 지원 티켓에서 콜백 URL을 받습니다.
- 이 콜백 URL로 ID 공급자를 업데이트합니다.
- 인스턴스의 로그인 페이지에서 SSO 로그인 버튼을 확인하여 구성을 검증합니다.
OIDC 그룹 멤버십을 기반으로 사용자 구성#
OIDC 그룹 멤버십을 기반으로 사용자 역할 및 액세스를 할당하도록 GitLab을 구성할 수 있습니다.
사전 요건:
- ID 공급자가
ID token또는userinfo엔드포인트에 그룹 정보를 포함해야 합니다. - 기본 OIDC 인증을 이미 구성해야 합니다.
OIDC 그룹 멤버십을 기반으로 사용자를 구성하려면:
-
GitLab이 그룹 정보를 찾을 위치를 지정하는
groups_attribute매개변수를 추가합니다. -
필요에 따라 적절한 그룹 배열을 구성합니다.
-
지원 티켓에서 OIDC 블록에 그룹 구성을 포함합니다. 예를 들어:
{ "label": "Login with OIDC", "issuer": "https://accounts.example.com", "discovery": true, "groups_attribute": "groups", "required_groups": [ "gitlab-users" ], "external_groups": [ "external-contractors" ], "auditor_groups": [ "auditors" ], "admin_groups": [ "gitlab-admins" ] }
구성 매개변수#
다음 매개변수를 사용하여 GitLab Dedicated 인스턴스에 대해 OIDC를 구성할 수 있습니다. 자세한 내용은 인증 공급자로 OpenID Connect 사용을 참조하십시오.
필수 매개변수#
| 매개변수 | 설명 |
|---|---|
issuer |
ID 공급자의 OpenID Connect 발급자 URL. |
label |
로그인 버튼의 표시 이름. |
discovery |
OpenID Connect 검색을 사용할지 여부(권장: true). |
선택적 매개변수#
| 매개변수 | 설명 | 기본값 |
|---|---|---|
admin_groups |
관리자 액세스 권한이 있는 그룹. | [] |
auditor_groups |
감사자 액세스 권한이 있는 그룹. | [] |
client_auth_method |
클라이언트 인증 방법. | "basic" |
external_groups |
외부 사용자로 표시된 그룹. | [] |
groups_attribute |
OIDC 응답에서 그룹을 찾을 위치. | 없음 |
pkce |
PKCE(Proof Key for Code Exchange) 활성화. | false |
required_groups |
액세스에 필요한 그룹. | [] |
response_mode |
인증 응답 전달 방법. | 없음 |
response_type |
OAuth 2.0 응답 유형. | "code" |
scope |
요청할 OpenID Connect 범위. | ["openid"] |
send_scope_to_token_endpoint |
토큰 엔드포인트 요청에 범위 매개변수 포함. | true |
uid_field |
고유 식별자로 사용할 필드. | "sub" |
공급자별 예시#
Google#
{
"label": "Google",
"scope": ["openid", "profile", "email"],
"response_type": "code",
"issuer": "https://accounts.google.com",
"client_auth_method": "query",
"discovery": true,
"uid_field": "preferred_username",
"pkce": true
}
Microsoft Azure AD#
{
"label": "Azure AD",
"scope": ["openid", "profile", "email"],
"response_type": "code",
"issuer": "https://login.microsoftonline.com/your-tenant-id/v2.0",
"client_auth_method": "query",
"discovery": true,
"uid_field": "preferred_username",
"pkce": true
}
Okta#
{
"label": "Okta",
"scope": ["openid", "profile", "email", "groups"],
"response_type": "code",
"issuer": "https://your-domain.okta.com/oauth2/default",
"client_auth_method": "query",
"discovery": true,
"uid_field": "preferred_username",
"pkce": true
}
문제 해결#
OpenID Connect 구성에서 문제가 발생하면:
- ID 공급자가 올바르게 구성되어 있고 액세스 가능한지 확인합니다.
- 지원에 제공된 클라이언트 ID와 시크릿이 올바른지 확인합니다.
- ID 공급자의 리디렉션 URI가 지원 티켓에서 제공된 것과 일치하는지 확인합니다.
- 발급자 URL이 올바르고 액세스 가능한지 확인합니다.
