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를 사용하거나 새로 생성할 수 있습니다. 새로 생성하는 경우 유일해야 합니다. 모든 Google 개발자 등록 애플리케이션 중에서

새 프로젝트를 목록에서 확인하려면 페이지를 새로고침하세요.

Google API 콘솔 구성

  1. Google API 콘솔로 이동합니다.
  2. 왼쪽 상단에서 이전에 생성한 프로젝트를 선택합니다.
  3. OAuth 동의 화면을 선택하고 필드를 완료합니다.
  4. 자격 증명 > 자격 부여 클라이언트 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 페이지에서 활성화를 선택합니다. 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: "<당신의 앱 ID>",
        app_secret: "<당신의 앱 비밀>",
        args: { access_type: "offline", approval_prompt: "" }
      }
    ]
    

    자체 컴파일된 설치의 경우:

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

    Linux 패키지 설치의 경우:

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

    자체 컴파일된 설치의 경우:

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

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