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. 새 응용 프로그램 추가에 필요한 세부 정보를 제공합니다.
    • 이름: 아무 것이나 가능합니다. <Organization>의 GitLab 또는 <Your Name>의 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: "제공자 이름", # 로그인 버튼에 대한 선택 사항 레이블, 기본값: "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: "제공자 이름", # 로그인 버튼에 대한 선택 사항 레이블, 기본값: "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: '제공자 이름', # 로그인 버튼에 대한 선택 사항 레이블, 기본값: "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
        args: { "client_options": { "site": 'https://gitlab.example.com' } }
    
    note
    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 클라이언트는 이 매개변수를 통과하도록 구성됩니다. 그러나 다른 애플리케이션들도 이를 통과할 수 있습니다.