GitLab.com 서버를 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 계정이 없는 사용자의 계정 자동 생성이 활성화됩니다.
  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 클라이언트는 이 매개변수를 전달하도록 구성되어 있지만, 다른 응용 프로그램도 이를 전달할 수 있습니다.