Microsoft Azure를 OAuth 2.0 인증 공급자로 사용하기
Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하고 Microsoft Azure
자격 증명으로 GitLab에 로그인할 수 있습니다.
Microsoft ID 플랫폼(v2.0) 엔드포인트를 사용하는 OpenID Connect 프로토콜을 구성하세요.
일반 OpenID Connect 구성으로 마이그레이션
GitLab 17.0 이상에서는 azure_oauth2
를 사용하는 인스턴스가
일반 OpenID Connect 구성으로 마이그레이션해야 합니다.
자세한 내용은 OpenID Connect 프로토콜로 마이그레이션을 참조하세요.
Azure 애플리케이션 등록
Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하려면
Azure 애플리케이션을 등록하고 클라이언트 ID 및 비밀 키를 가져와야 합니다.
- Azure 포털에 로그인합니다.
- 여러 Azure Active Directory 테넌트가 있는 경우, 원하는 테넌트로 전환합니다. 테넌트 ID를 기록해 두세요.
-
애플리케이션 등록하고 다음 정보를 제공합니다:
- 리디렉션 URI, 이는 GitLab 설치의 Azure OAuth 콜백 URL을 요구합니다.
https://gitlab.example.com/users/auth/azure_activedirectory_v2/callback
. - 애플리케이션 유형, 이는 Web으로 설정해야 합니다.
- 리디렉션 URI, 이는 GitLab 설치의 Azure OAuth 콜백 URL을 요구합니다.
-
클라이언트 ID와 클라이언트 비밀을 저장합니다. 클라이언트 비밀은 한 번만 표시됩니다.
필요 시, 새 애플리케이션 비밀을 생성할 수 있습니다.
client ID
와 client secret
는 OAuth 2.0과 관련된 용어입니다.
일부 Microsoft 문서에서는 이 용어를 Application ID
와 Application Secret
이라고 명명합니다.
API 권한(스코프) 추가
애플리케이션을 생성한 후, 웹 API를 노출하도록 구성합니다.
다음 Microsoft Graph API에서 위임된 권한을 추가합니다:
email
openid
profile
또는, User.Read.All
애플리케이션 권한을 추가하세요.
GitLab에서 Microsoft OAuth 활성화
OpenID Connect 프로토콜을 사용해야 합니다.
-
GitLab 서버에서 구성 파일을 엽니다.
-
리눅스 패키지 설치의 경우:
sudo editor /etc/gitlab/gitlab.rb
-
독립적으로 컴파일한 설치의 경우:
cd /home/git/gitlab sudo -u git -H editor config/gitlab.yml
-
-
공통 설정을 구성하여
azure_activedirectory_v2
를 단일 로그온 공급자로 추가합니다. 이는
기존 GitLab 계정이 없는 사용자에 대해 즉시 계정 프로비저닝을 가능하게 합니다. -
공급자 구성을 추가합니다.
Azure 애플리케이션을 등록할 때 받은 값을 사용하여<client_id>
,<client_secret>
,<tenant_id>
를 교체합니다.-
리눅스 패키지 설치의 경우:
gitlab_rails['omniauth_providers'] = [ { "name" => "azure_activedirectory_v2", "label" => "Provider name", # 로그인 버튼에 대한 선택적 레이블, 기본값은 "Azure AD v2" "args" => { "client_id" => "<client_id>", "client_secret" => "<client_secret>", "tenant_id" => "<tenant_id>", } } ]
-
대체 Azure 클라우드의 경우,
args
섹션에base_azure_url
을 구성합니다. 예를 들어, Azure 정부 커뮤니티 클라우드(GCC)의 경우:gitlab_rails['omniauth_providers'] = [ { "name" => "azure_activedirectory_v2", "label" => "Provider name", # 로그인 버튼에 대한 선택적 레이블, 기본값은 "Azure AD v2" "args" => { "client_id" => "<client_id>", "client_secret" => "<client_secret>", "tenant_id" => "<tenant_id>", "base_azure_url" => "https://login.microsoftonline.us" } } ]
-
독립적으로 컴파일한 설치의 경우:
v2.0 엔드포인트의 경우:
- { name: 'azure_activedirectory_v2', label: 'Provider name', # 로그인 버튼에 대한 선택적 레이블, 기본값은 "Azure AD v2" args: { client_id: "<client_id>", client_secret: "<client_secret>", tenant_id: "<tenant_id>" } }
대체 Azure 클라우드의 경우,
args
섹션에base_azure_url
을 구성합니다. 예를 들어, Azure 정부 커뮤니티 클라우드(GCC)의 경우:- { name: 'azure_activedirectory_v2', label: 'Provider name', # 로그인 버튼에 대한 선택적 레이블, 기본값은 "Azure AD v2" args: { client_id: "<client_id>", client_secret: "<client_secret>", tenant_id: "<tenant_id>", base_azure_url: "https://login.microsoftonline.us" } }
args
섹션에 OAuth 2.0 스코프
매개변수의scope
를 선택적으로 추가할 수 있습니다. 기본값은openid profile email
입니다. -
-
구성 파일을 저장합니다.
-
리눅스 패키지를 사용하여 설치한 경우 GitLab을 재구성합니다,
또는 독립적으로 컴파일한 설치의 경우 GitLab을 재시작합니다. -
GitLab 로그인 페이지를 새로 고칩니다. Microsoft 아이콘이 로그인 폼 아래에 표시되어야 합니다.
-
아이콘을 선택하고 Microsoft에 로그인하여 GitLab 애플리케이션을 승인합니다.
기존 GitLab 사용자가 새로운 Azure AD 계정에 연결할 수 있는 방법에 대한 정보는
기존 사용자에 대한 OmniAuth 활성화를 읽어보세요.
문제 해결
사용자 로그인 배너 메시지: Extern UID가 이미 사용 중입니다
로그인할 때 Extern UID가 이미 사용 중입니다
라는 오류가 발생할 수 있습니다.
이 문제를 해결하려면 Rails 콘솔을 사용하여 계정에 연결된 기존 사용자가 있는지 확인하세요:
-
extern_uid
를 찾습니다:id = Identity.where(extern_uid: '<extern_uid>')
-
연결된
extern_uid
에 해당하는 사용자 이름을 찾기 위해 내용을 출력합니다:pp id
해당 extern_uid
가 계정에 연결되어 있다면, 사용자 이름을 사용하여 로그인할 수 있습니다.
해당 extern_uid
가 어떤 사용자 이름에도 연결되어 있지 않다면, 이는 삭제 오류로 인한 유령 레코드일 수 있습니다.
다음 명령을 실행하여 ID를 삭제하여 extern uid
를 해제합니다:
Identity.find('<id>').delete