GitLab을 OpenID Connect 신원 제공자로 사용하기

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

OpenID Connect 소개

OpenID Connect (OIDC)는 OAuth 2.0 프로토콜 위에 구축된 간단한 신원 식별 기술입니다. 클라이언트는 다음을 수행할 수 있습니다:

  • 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 인스턴스에서도 사용할 수 있습니다.

공유 정보

다음 사용자 정보가 클라이언트와 공유됩니다:

클레임 타입 설명 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 엔드포인트에서 사용할 수 있습니다.