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. 왼쪽 사이드바에서 애플리케이션을 선택합니다.
  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 계정이 없는 사용자를 위한 JIT(Just-In-Time) 계정 프로비저닝이 활성화됩니다.
  10. 제공자 구성을 추가합니다:

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

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        # label: "Provider name", # optional label for login button, defaults to "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user" } # optional: defaults to the scopes of the application
      }
    ]
    

    또는, 다른 GitLab 인스턴스를 인증하는 Linux 패키지 설치의 경우:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        label: "Provider name", # optional label for login button, defaults to "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user", # optional: defaults to the scopes of the application
                client_options: { site: "https://gitlab.example.com" } }
      }
    ]
    

    GitLab.com을 인증하는 자체 컴파일된 설치의 경우:

    - { name: 'gitlab',
        # label: 'Provider name', # optional label for login button, defaults to "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
    

    또는, 다른 GitLab 인스턴스를 인증하는 자체 컴파일된 설치의 경우:

    - { name: 'gitlab',
        label: 'Provider name', # optional label for login button, defaults to "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 애플리케이션 페이지의 애플리케이션 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 클라이언트는 이 매개변수를 전달하도록 구성되어 있지만, 다른 애플리케이션들도 이를 전달할 수 있습니다.