GitLab.com과 서버 통합

Tier: Free, Premium, Ultimate
Offering: Self-Managed

GitLab.com에서 프로젝트를 가져오고 GitLab.com 계정으로 GitLab 인스턴스에 로그인하세요.

GitLab.com OmniAuth 제공자를 활성화하려면 GitLab.com에 애플리케이션을 등록해야 합니다.
GitLab.com은 사용할 수 있도록 애플리케이션 ID와 비밀 키를 생성합니다.

  1. GitLab.com에 로그인합니다.
  2. 왼쪽 사이드바에서 아바타를 선택합니다.
  3. 프로필 편집을 선택합니다.
  4. 왼쪽 사이드바에서 Applications을 선택합니다.
  5. 새 애플리케이션 추가에 필요한 세부 정보를 제공합니다.
    • 이름: 아무 것이나 가능합니다. <조직 이름>의 GitLab 또는 <당신의 이름>의 GitLab 또는 기타 설명적인 이름을 고려하세요.
    • 리디렉션 URI:

      # 비-SSL URL을 사용할 수도 있지만 SSL URL을 사용하는 것이 좋습니다.
      https://your-gitlab.example.com/import/gitlab/callback
      https://your-gitlab.example.com/users/auth/gitlab/callback
      

    첫 번째 링크는 가져오기에 필요하며 두 번째 링크는 인증에 필요합니다.

    만약:

    • 가져오기를 사용할 계획이라면, 스코프를 그대로 둘 수 있습니다.
    • 이 애플리케이션을 인증 용도로만 사용하려면 더 최소한의 스코프를 사용하는 것을 권장합니다. read_user가 충분합니다.
  6. 애플리케이션 저장을 선택합니다.
  7. 이제 애플리케이션 ID시크릿이 표시됩니다. 계속 진행하면서 이 페이지를 열어 둡니다.
  8. GitLab 서버에서 구성 파일을 엽니다.

    Linux 패키지 설치의 경우:

    sudo editor /etc/gitlab/gitlab.rb
    

    자체 컴파일 설치의 경우:

    cd /home/git/gitlab
    
    sudo -u git -H editor config/gitlab.yml
    
  9. 공통 설정을 구성하여 gitlab을 단일 로그인 제공자로 추가합니다. 이렇게 함으로써 기존의 GitLab 계정이 없는 사용자들을 위한 신속한 계정 프로비저닝이 가능해집니다.
  10. 제공자 구성을 추가합니다.

    GitLab.com 인증을 위한 Linux 패키지 설치의 경우:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        # label: "제공자 이름", # 로그인 버튼에 대한 선택 사항 라벨, 기본값: "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user" } # 선택 사항: 애플리케이션의 스코프 기본값
      }
    ]
    

    또는, 다른 GitLab 인스턴스에 대한 Linux 패키지 설치의 경우:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        label: "Provider name", # 로그인 버튼에 대한 선택 사항 라벨, 기본값: "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user", # 선택 사항: 애플리케이션의 스코프 기본값
                client_options: { site: "https://gitlab.example.com" } }
      }
    ]
    

    GitLab.com에 대한 자체 컴파일 설치의 경우:

    - { name: 'gitlab',
        # label: '제공자 이름', # 로그인 버튼에 대한 선택 사항 라벨, 기본값: "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
    

    또는, 다른 GitLab 인스턴스에 대한 자체 컴파일 설치의 경우:

    - { name: 'gitlab',
        label: 'Provider name', # 로그인 버튼에 대한 선택 사항 라벨, 기본값: "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
        args: { "client_options": { "site": 'https://gitlab.example.com' } }
    

    참고: GitLab 15.1 이전에는 site 매개 변수에 /api/v4 접미사가 필요합니다. GitLab 15.2 이상으로 업그레이드한 후에는 접미사를 삭제하는 것이 좋습니다.

  11. 'YOUR_APP_ID'를 GitLab.com 애플리케이션 페이지의 Application ID로 변경합니다.
  12. 'YOUR_APP_SECRET'를 GitLab.com 애플리케이션 페이지의 시크릿으로 변경합니다.
  13. 설정 파일을 저장합니다.
  14. 적절한 방법을 사용하여 이러한 변경 사항을 구현합니다:

로그인 페이지에는 이제 일반적인 로그인 창 뒤에 GitLab.com 아이콘이 있어야 합니다. 이 아이콘을 선택하여 인증 프로세스를 시작합니다.
GitLab.com은 사용자에게 로그인하고 GitLab 애플리케이션을 승인할 것을 요청합니다.
모든 것이 잘 되면 사용자는 GitLab 인스턴스로 돌아가서 로그인됩니다.

로그인 시 액세스 권한 축소

GitLab 인스턴스를 사용하여 인증할 경우, OAuth 애플리케이션이 로그인 시 액세스 권한을 축소할 수 있습니다.

OAuth 애플리케이션은 gl_auth_type=login 인증 매개변수와 함께 애플리케이션의 목적을 홍보할 수 있습니다.
애플리케이션이 api 또는 read_api로 구성된 경우, 액세스 토큰은 로그인용으로 read_user로 발급됩니다. 왜냐하면 더 높은 권한이 필요하지 않기 때문입니다.

GitLab OAuth 클라이언트는 이 매개변수를 전달하도록 구성되어 있지만, 다른 애플리케이션도 전달할 수 있습니다.