AWS Cognito를 OAuth 2.0 인증 공급자로 사용하기
Amazon Web Services (AWS) Cognito를 사용하면 GitLab 인스턴스에 사용자 가입, 로그인 및 액세스 제어를 추가할 수 있습니다.
다음 문서는 AWS Cognito를 OAuth 2.0 공급자로 활성화하는 방법을 안내합니다.
AWS Cognito 구성
AWS Cognito OAuth 2.0 OmniAuth 공급자를 활성화하려면 Cognito에 애플리케이션을 등록하십시오. 이 과정에서는 애플리케이션에 대한 Client ID 및 Client Secret이 생성됩니다.
AWS Cognito를 인증 공급자로 활성화하려면 다음 단계를 완료하십시오. 구성한 모든 설정은 나중에 수정할 수 있습니다.
- AWS 콘솔에 로그인합니다.
- Services 메뉴에서 Cognito를 선택합니다.
- Manage User Pools을 선택한 후 오른쪽 상단에서 Create a user pool을 선택합니다.
- 사용자 풀 이름을 입력한 후 Step through settings을 선택합니다.
- How do you want your end users to sign in?에서 Email address or phone number 및 Allow email addresses를 선택합니다.
- Which standard attributes do you want to require?에서 email을 선택합니다.
- 나머지 설정을 귀하의 필요에 맞게 구성합니다. 기본 설정에서는 이러한 설정이 GitLab 구성에 영향을 미치지 않습니다.
-
App clients 설정에서:
- Add an app client을 선택합니다.
- App client name을 추가합니다.
- Enable username password based authentication 체크박스를 선택합니다.
- Create app client을 선택합니다.
- 이메일 전송을 위한 AWS Lambda 함수를 설정하고 사용자 풀 생성을 완료합니다.
-
사용자 풀을 생성한 후 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
- 앱 클라이언트 설정 변경 사항을 저장합니다.
- Domain name에서 AWS Cognito 애플리케이션의 AWS 도메인 이름을 포함합니다.
- App Clients에서 앱 클라이언트 ID를 찾습니다. Show details를 선택하여 앱 클라이언트 비밀을 표시합니다. 이러한 값은 OAuth 2.0 Client ID 및 Client Secret에 해당합니다. 이 값을 저장하십시오.
GitLab 구성
-
cognito
를 단일 로그온 공급자로 추가하기 위해 공통 설정을 구성합니다. 이는 기존 GitLab 계정이 없는 사용자에 대한 Just-In-Time 계정 프로비저닝을 활성화합니다. -
GitLab 서버에서 구성 파일을 엽니다. 리눅스 패키지 설치의 경우:
sudo editor /etc/gitlab/gitlab.rb
-
다음 코드 블록에서 다음 매개변수에 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", # 로그인 버튼에 대한 선택적 레이블, 기본값은 "Cognito" icon: nil, # 선택적 아이콘 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" } } ]
-
- 구성 파일을 저장합니다.
- 파일을 저장하고 reconfigure하여 변경 사항을 적용합니다.
이제 로그인 페이지에 정규 로그인 양식 아래에 Cognito 옵션이 표시되어야 합니다.
이 옵션을 선택하여 인증 프로세스를 시작합니다.
AWS Cognito는 로그인하고 GitLab 애플리케이션을 승인하도록 요청합니다.
승인이 성공하면 리디렉션되어 GitLab 인스턴스에 로그인됩니다.
자세한 내용은 공통 설정 구성을 참조하십시오.