Google OAuth 2.0을 OAuth 2.0 인증 제공자로 사용하기

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

Google OAuth 2.0 OmniAuth 제공자를 활성화하려면 Google에서 애플리케이션을 등록해야 합니다. Google은 사용할 클라이언트 ID와 보안 키를 생성합니다.

Google OAuth를 활성화하려면 다음을 구성해야 합니다.

  • Google Cloud Resource Manager
  • Google API Console
  • GitLab 서버

Google Cloud Resource Manager 구성

  1. Google Cloud Resource Manager로 이동합니다.
  2. 프로젝트 만들기를 선택합니다.
  3. 프로젝트 이름GitLab을 입력합니다.
  4. 프로젝트 ID에 Google이 기본적으로 무작위로 생성한 프로젝트 ID가 제공됩니다. 이 무작위 생성된 ID를 사용하거나 새 ID를 만들 수 있습니다. 새 ID를 만드는 경우 Google 개발자 등록 애플리케이션 전체에서 고유해야 합니다.

새 프로젝트를 디렉터리에서 확인하려면 페이지를 새로 고칩니다.

Google API 콘솔 구성

  1. Google API 콘솔로 이동합니다.
  2. 왼쪽 상단에서 이전에 생성한 프로젝트를 선택합니다.
  3. OAuth 동의 화면을 선택하고 필드를 완성합니다.
  4. 자격 증명 > 자격 증명 만들기 > OAuth 클라이언트 ID를 선택합니다.
  5. 다음을 완성합니다.
    • 애플리케이션 유형: 웹 애플리케이션을 선택합니다.
    • 이름: 기본 이름을 사용하거나 원하는 이름을 입력합니다.
    • 승인된 JavaScript 원본: https://gitlab.example.com을 입력합니다.
    • 승인된 리디렉션 URI: 도메인 이름 다음에 각각의 콜백 URI를 하나씩 입력합니다:

      https://gitlab.example.com/users/auth/google_oauth2/callback
      https://gitlab.example.com/-/google_api/auth/callback
      
  6. 클라이언트 ID와 클라이언트 보안 키가 표시됩니다. 이들을 메모하거나 나중에 필요할 때 이 페이지를 열어 둡니다.
  7. Google Kubernetes Engine에 액세스하도록 프로젝트를 활성화하려면 다음을 활성화해야 합니다:
    • Google Kubernetes Engine API
    • Cloud Resource Manager API
    • Cloud Billing API

    다음을 수행하세요:

    1. Google API 콘솔로 이동합니다.
    2. 페이지 상단에서 API 및 서비스 사용 설정을 선택합니다.
    3. 위의 각 API를 찾습니다. API 페이지에서 사용 설정을 선택합니다. API가 완전히 기능적으로 사용될 수 있도록 하는 데 몇 분이 소요될 수 있습니다.

GitLab 서버 구성

  1. 구성 파일을 엽니다.

    Linux 패키지 설치의 경우:

    sudo editor /etc/gitlab/gitlab.rb
    

    자체 컴파일 설치의 경우:

    cd /home/git/gitlab
    sudo -u git -H editor config/gitlab.yml
    
  2. 공통 설정을 구성하여 google_oauth2를 단일 사인온 제공자로 추가하세요. 이렇게 하면 기존 GitLab 계정이없는 사용자에게 실시간 계정 프로비저닝이 가능해집니다.
  3. 제공자 구성을 추가하세요.

    Linux 패키지 설치의 경우:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "google_oauth2",
        # label: "Provider name", # 선택적인 로그인 버튼 레이블, 기본값은 "Google"
        app_id: "<YOUR_APP_ID>",
        app_secret: "<YOUR_APP_SECRET>",
        args: { access_type: "offline", approval_prompt: "" }
      }
    ]
    

    자체 컴파일 설치의 경우:

    - { name: 'google_oauth2',
        # label: 'Provider name', # 선택적인 로그인 버튼 레이블, 기본값은 "Google"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
        args: { access_type: 'offline', approval_prompt: '' } }
    
  4. <YOUR_APP_ID>를 Google 개발자 페이지의 클라이언트 ID로 교체합니다.
  5. <YOUR_APP_SECRET>을 Google 개발자 페이지의 클라이언트 보안 키로 교체합니다.
  6. Google이 노출 IP 주소를 허용하지 않기 때문에 GitLab을 완전히 정규화된 도메인 이름을 사용하도록 구성하세요.

    Linux 패키지 설치의 경우:

    external_url 'https://gitlab.example.com'
    

    자체 컴파일 설치의 경우:

    gitlab:
      host: https://gitlab.example.com
    
  7. 구성 파일을 저장합니다.
  8. 변경 사항을 적용하려면:

로그인 페이지에 일반 로그인 양식 아래에 Google 아이콘이 나타날 것입니다. 인증 프로세스를 시작하려면 아이콘을 선택하세요. Google은 사용자에게 로그인하고 GitLab 애플리케이션을 승인하도록 요청합니다. 모든 것이 잘 되면 사용자는 GitLab로 돌아가서 로그인됩니다.