GitLab을 OpenID Connect ID 공급자로 사용하기

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed

이 문서는 GitLab을 OpenID Connect ID 공급자로 사용하여 다른 서비스에 로그인하는 방법에 대해 설명합니다.

OpenID Connect 소개

OpenID Connect (OIDC)는 OAuth 2.0 프로토콜 위의 간단한 ID 계층입니다. 클라이언트는 다음을 수행할 수 있습니다:

  • GitLab에서 수행된 인증을 기반으로 최종 사용자의 신원을 확인합니다.
  • 상호 운용 가능하고 REST와 유사한 방식으로 최종 사용자에 대한 기본 프로필 정보를 얻습니다.

OIDC는 OpenID 2.0과 동일한 작업을 수행하지만 API 친화적이며 네이티브 및 모바일 애플리케이션에서 사용 가능합니다.

클라이언트 측에서는 Rails 애플리케이션을 위해 OmniAuth::OpenIDConnect를 사용하거나 사용 가능한 다른 클라이언트 구현을 사용할 수 있습니다.

GitLab 구현은 doorkeeper-openid_connect 젬을 사용합니다. 지원되는 사양의 부분에 대한 자세한 내용은 README를 참조하세요.

OAuth 애플리케이션을 위한 OpenID Connect 활성화

GitLab에서 OAuth 애플리케이션을 설정하는 방법에 대한 기본 정보는 OAuth 가이드를 참조하세요. 애플리케이션에 대해 OIDC를 활성화하려면 애플리케이션 설정에서 openid 범위를 선택하기만 하면 됩니다.

설정 발견

클라이언트에서 OIDC 설정을 발견 URL에서 가져오는 것을 허용하는 경우 다음 URL을 사용하여 GitLab.com에 적합한 설정을 자동으로 찾을 수 있습니다:

https://gitlab.com/.well-known/openid-configuration

유사한 URL을 다른 GitLab 인스턴스에 사용할 수 있습니다.

공유 정보

클라이언트와 공유되는 사용자 정보는 다음과 같습니다:

Claim Type Description ID Token에 포함됨 userinfo 엔드포인트에 포함됨
sub string 사용자 ID
auth_time integer 사용자의 마지막 인증 타임스탬프 아니요
name string 사용자의 전체 이름
nickname string 사용자의 GitLab 사용자 이름
preferred_username string 사용자의 GitLab 사용자 이름
email string 사용자의 이메일 주소
이것은 사용자의 기본 이메일 주소입니다
email_verified boolean 사용자의 이메일 주소가 확인되었는지 여부
website string 사용자의 웹사이트 URL
profile string 사용자의 GitLab 프로필 URL
picture string 사용자의 GitLab 아바타 URL
groups array 사용자가 직접 또는 조상 그룹을 통해 소속된 그룹의 경로입니다. 아니요
groups_direct array 사용자가 직접 소속된 그룹의 경로입니다. 아니요
https://gitlab.org/claims/groups/owner array 소유자 역할을 가진 사용자 소속 그룹 이름 아니요
https://gitlab.org/claims/groups/maintainer array 유지 관리 역할을 가진 사용자 소속 그룹 이름 아니요
https://gitlab.org/claims/groups/developer array 개발자 역할을 가진 사용자 소속 그룹 이름 아니요

emailemail_verified 클레임은 애플리케이션이 email 클레임 및 사용자의 공개 이메일 주소에 접근할 수 있는 경우에만 추가되며, 그렇지 않으면 포함되지 않습니다. 모든 다른 클레임은 OIDC 클라이언트에서 사용하는 /oauth/userinfo 엔드포인트에서 사용할 수 있습니다.