InfoGrab Docs

AWS Cognito를 OAuth 2.0 인증 공급자로 사용

요약

Amazon Web Services(AWS) Cognito를 사용하면 새로운 사용자가 계정을 만들고, 로그인하고, GitLab 인스턴스에 액세스할 수 있습니다. AWS Cognito OAuth 2.0 OmniAuth 공급자를 활성화하려면 Cognito에 애플리케이션을 등록하세요.

Amazon Web Services(AWS) Cognito를 사용하면 새로운 사용자가 계정을 만들고, 로그인하고, GitLab 인스턴스에 액세스할 수 있습니다. 다음 문서에서는 AWS Cognito를 OAuth 2.0 공급자로 활성화합니다.

AWS Cognito 구성#

AWS Cognito OAuth 2.0 OmniAuth 공급자를 활성화하려면 Cognito에 애플리케이션을 등록하세요. 이 과정에서 애플리케이션의 클라이언트 ID와 클라이언트 시크릿이 생성됩니다. AWS Cognito를 인증 공급자로 활성화하려면 다음 단계를 완료하세요. 이후에 구성한 설정을 수정할 수 있습니다.

  1. AWS 콘솔에 로그인합니다.

  2. Services 메뉴에서 Cognito를 선택합니다.

  3. Manage User Pools를 선택하고 오른쪽 상단에서 Create a user pool을 선택합니다.

  4. 사용자 풀 이름을 입력하고 Step through settings를 선택합니다.

  5. How do you want your end users to sign in? 아래에서 Email address or phone numberAllow email addresses를 선택합니다.

  6. Which standard attributes do you want to require? 아래에서 email을 선택합니다.

  7. 나머지 설정을 필요에 맞게 구성합니다. 기본 설정에서는 이 설정이 GitLab 구성에 영향을 미치지 않습니다.

  8. App clients 설정에서:

    1. Add an app client를 선택합니다.
    2. App client name을 추가합니다.
    3. Enable username password based authentication 체크박스를 선택합니다.
  9. Create app client를 선택합니다.

  10. 이메일 전송을 위한 AWS Lambda 함수를 설정하고 사용자 풀 생성을 완료합니다.

  11. 사용자 풀을 생성한 후 App client settings로 이동하여 필요한 정보를 입력합니다:

    • Enabled Identity Providers - 모두 선택
    • Callback URL - https://<your_gitlab_instance_url>/users/auth/cognito/callback
    • Allowed OAuth Flows - Authorization code grant
    • Allowed OAuth 2.0 Scopes - email, openid, profile
  12. 앱 클라이언트 설정의 변경 사항을 저장합니다.

  13. Domain name 아래에서 AWS Cognito 애플리케이션의 AWS 도메인 이름을 입력합니다.

  14. App Clients 아래에서 앱 클라이언트 ID를 찾습니다. Show details를 선택하여 앱 클라이언트 시크릿을 표시합니다. 이 값은 OAuth 2.0 클라이언트 ID 및 클라이언트 시크릿에 해당합니다. 이 값을 저장합니다.

GitLab 구성#

  1. 공통 설정을 구성하여 cognito를 싱글 사인온 공급자로 추가합니다. 이를 통해 기존 GitLab 계정이 없는 사용자에 대해 Just-In-Time 계정 프로비저닝이 활성화됩니다.

  2. GitLab 서버에서 구성 파일을 엽니다. Linux 패키지 설치의 경우:

    sudo editor /etc/gitlab/gitlab.rb
    
  3. 다음 코드 블록에서 다음 매개변수에 AWS Cognito 애플리케이션 정보를 입력합니다:

    • app_id: 클라이언트 ID.
    • app_secret: 클라이언트 시크릿.
    • site: Amazon 도메인 및 리전.

    /etc/gitlab/gitlab.rb 파일에 코드 블록을 포함합니다:

    gitlab_rails['omniauth_allow_single_sign_on'] = ['cognito']
    gitlab_rails['omniauth_providers'] = [
      {
        name: "cognito",
        label: "Provider name", # optional label for login button, defaults to "Cognito"
        icon: nil,   # Optional icon URL
        app_id: "<client_id>",
        app_secret: "<client_secret>",
        args: {
          scope: "openid profile email",
          client_options: {
            site: "https://<your_domain>.auth.<your_region>.amazoncognito.com",
            authorize_url: "/oauth2/authorize",
            token_url: "/oauth2/token",
            user_info_url: "/oauth2/userInfo"
          },
          user_response_structure: {
            root_path: [],
            id_path: ["sub"],
            attributes: { nickname: "email", name: "email", email: "email" }
          },
          name: "cognito",
          strategy_class: "OmniAuth::Strategies::OAuth2Generic"
        }
      }
    ]
    
  4. 구성 파일을 저장합니다.

  5. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

이제 로그인 페이지에 일반 로그인 양식 아래에 Cognito 옵션이 표시됩니다. 이 옵션을 선택하여 인증 프로세스를 시작합니다. AWS Cognito가 GitLab 애플리케이션에 로그인하고 권한을 부여하도록 요청합니다. 권한 부여가 성공하면 GitLab 인스턴스로 리디렉션되어 로그인됩니다.

자세한 내용은 공통 설정 구성을 참조하세요.

AWS Cognito를 OAuth 2.0 인증 공급자로 사용

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

Amazon Web Services(AWS) Cognito를 사용하면 새로운 사용자가 계정을 만들고, 로그인하고, GitLab 인스턴스에 액세스할 수 있습니다. AWS Cognito OAuth 2.0 OmniAuth 공급자를 활성화하려면 Cognito에 애플리케이션을 등록하세요.

Amazon Web Services(AWS) Cognito를 사용하면 새로운 사용자가 계정을 만들고, 로그인하고, GitLab 인스턴스에 액세스할 수 있습니다. 다음 문서에서는 AWS Cognito를 OAuth 2.0 공급자로 활성화합니다.

AWS Cognito 구성#

AWS Cognito OAuth 2.0 OmniAuth 공급자를 활성화하려면 Cognito에 애플리케이션을 등록하세요. 이 과정에서 애플리케이션의 클라이언트 ID와 클라이언트 시크릿이 생성됩니다. AWS Cognito를 인증 공급자로 활성화하려면 다음 단계를 완료하세요. 이후에 구성한 설정을 수정할 수 있습니다.

  1. AWS 콘솔에 로그인합니다.

  2. Services 메뉴에서 Cognito를 선택합니다.

  3. Manage User Pools를 선택하고 오른쪽 상단에서 Create a user pool을 선택합니다.

  4. 사용자 풀 이름을 입력하고 Step through settings를 선택합니다.

  5. How do you want your end users to sign in? 아래에서 Email address or phone numberAllow email addresses를 선택합니다.

  6. Which standard attributes do you want to require? 아래에서 email을 선택합니다.

  7. 나머지 설정을 필요에 맞게 구성합니다. 기본 설정에서는 이 설정이 GitLab 구성에 영향을 미치지 않습니다.

  8. App clients 설정에서:

    1. Add an app client를 선택합니다.
    2. App client name을 추가합니다.
    3. Enable username password based authentication 체크박스를 선택합니다.
  9. Create app client를 선택합니다.

  10. 이메일 전송을 위한 AWS Lambda 함수를 설정하고 사용자 풀 생성을 완료합니다.

  11. 사용자 풀을 생성한 후 App client settings로 이동하여 필요한 정보를 입력합니다:

    • Enabled Identity Providers - 모두 선택
    • Callback URL - https://<your_gitlab_instance_url>/users/auth/cognito/callback
    • Allowed OAuth Flows - Authorization code grant
    • Allowed OAuth 2.0 Scopes - email, openid, profile
  12. 앱 클라이언트 설정의 변경 사항을 저장합니다.

  13. Domain name 아래에서 AWS Cognito 애플리케이션의 AWS 도메인 이름을 입력합니다.

  14. App Clients 아래에서 앱 클라이언트 ID를 찾습니다. Show details를 선택하여 앱 클라이언트 시크릿을 표시합니다. 이 값은 OAuth 2.0 클라이언트 ID 및 클라이언트 시크릿에 해당합니다. 이 값을 저장합니다.

GitLab 구성#

  1. 공통 설정을 구성하여 cognito를 싱글 사인온 공급자로 추가합니다. 이를 통해 기존 GitLab 계정이 없는 사용자에 대해 Just-In-Time 계정 프로비저닝이 활성화됩니다.

  2. GitLab 서버에서 구성 파일을 엽니다. Linux 패키지 설치의 경우:

    sudo editor /etc/gitlab/gitlab.rb
    
  3. 다음 코드 블록에서 다음 매개변수에 AWS Cognito 애플리케이션 정보를 입력합니다:

    • app_id: 클라이언트 ID.
    • app_secret: 클라이언트 시크릿.
    • site: Amazon 도메인 및 리전.

    /etc/gitlab/gitlab.rb 파일에 코드 블록을 포함합니다:

    gitlab_rails['omniauth_allow_single_sign_on'] = ['cognito']
    gitlab_rails['omniauth_providers'] = [
      {
        name: "cognito",
        label: "Provider name", # optional label for login button, defaults to "Cognito"
        icon: nil,   # Optional icon URL
        app_id: "<client_id>",
        app_secret: "<client_secret>",
        args: {
          scope: "openid profile email",
          client_options: {
            site: "https://<your_domain>.auth.<your_region>.amazoncognito.com",
            authorize_url: "/oauth2/authorize",
            token_url: "/oauth2/token",
            user_info_url: "/oauth2/userInfo"
          },
          user_response_structure: {
            root_path: [],
            id_path: ["sub"],
            attributes: { nickname: "email", name: "email", email: "email" }
          },
          name: "cognito",
          strategy_class: "OmniAuth::Strategies::OAuth2Generic"
        }
      }
    ]
    
  4. 구성 파일을 저장합니다.

  5. 파일을 저장하고 변경 사항을 적용하려면 GitLab을 재구성합니다.

이제 로그인 페이지에 일반 로그인 양식 아래에 Cognito 옵션이 표시됩니다. 이 옵션을 선택하여 인증 프로세스를 시작합니다. AWS Cognito가 GitLab 애플리케이션에 로그인하고 권한을 부여하도록 요청합니다. 권한 부여가 성공하면 GitLab 인스턴스로 리디렉션되어 로그인됩니다.

자세한 내용은 공통 설정 구성을 참조하세요.