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 리소스 관리자
  • Google API 콘솔
  • GitLab 서버

Google Cloud 리소스 관리자 구성

  1. Google Cloud 리소스 관리자로 이동합니다.
  2. 프로젝트 만들기를 선택합니다.
  3. 프로젝트 이름GitLab을 입력합니다.
  4. 프로젝트 ID에는 Google이 기본적으로 무작위로 생성한 프로젝트 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 리소스 관리자 API
    • Cloud Billing API

    다음과 같이 진행하세요:

    1. Google API 콘솔로 이동합니다.
    2. 페이지 상단에서 API 및 서비스 활성화를 선택합니다.
    3. 위의 각 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: "제공자 이름", # 선택적으로 로그인 버튼의 레이블, 기본값은 "Google"
        app_id: "<YOUR_APP_ID>",
        app_secret: "<YOUR_APP_SECRET>",
        args: { access_type: "offline", approval_prompt: "" }
      }
    ]
    

    직접 컴파일한 설치의 경우:

    - { name: 'google_oauth2',
        # label: '제공자 이름', # 선택적 로그인 버튼의 레이블, 기본값은 "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에 반환되어 로그인됩니다.