GitLab을 OpenID Connect 식별 공급자로 사용하기
이 문서는 다른 서비스에 로그인하기 위해 GitLab을 OpenID Connect 식별 공급자로 사용하는 방법에 대해 다룹니다.
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 인스턴스에도 사용할 수 있습니다.
공유 정보
다음 유저 정보가 클라이언트와 공유됩니다:
Claim | Type | Description | Included in ID Token | Included in userinfo endpoint
|
---|---|---|---|---|
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
| 개발자 역할로 사용자가 직접 멤버인 그룹의 이름 | 아니요 | 예 |
email
및 email_verified
클레임은 애플리케이션이 email
클레임과 사용자의 공개 이메일 주소에 액세스 권한이 있는 경우에만 추가됩니다. 그렇지 않으면 추가되지 않습니다. 다른 모든 클레임은 OIDC 클라이언트가 사용하는 /oauth/userinfo
엔드포인트에서 사용할 수 있습니다.