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
    • 클라우드 리소스 관리자 API
    • 클라우드 청구 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: "<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으로 돌아가서 로그인합니다.