Microsoft AzureをOAuth 2.0認証プロバイダーとして使用する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
Microsoft Azure OAuth 2.0 OmniAuthプロバイダーを有効にして、Microsoft Azure認証情報でGitLabにサインインできます。
GitLabをAzure/Entra IDと初めて統合する場合は、Microsoft identity platform (v2.0) エンドポイントを使用するOpenID Connect protocol(OIDC)を設定してください。
汎用OpenID Connect設定に移行する
GitLab 17.0以降、azure_oauth2を使用するインスタンスは、汎用OpenID Connect設定に移行する必要があります。詳細については、Migrating to the OpenID Connect protocolを参照してください。
Azureアプリケーションを登録する
Microsoft Azure OAuth 2.0 OmniAuthプロバイダーを有効にするには、Azureアプリケーションを登録し、クライアントIDとシークレットキーを取得する必要があります。
Azure portalにサインインします。
複数のAzure Active Directoryテナントをお持ちの場合は、目的のテナントに切り替えてください。テナントIDをメモしてください。
Register an application登録し、次の情報を提供します。
- Azure OAuthコールバックのGitLabインストールのURLを必要とするリダイレクトURI。
https://gitlab.example.com/users/auth/azure_activedirectory_v2/callback。 - アプリケーションの種類。必ずWebに設定してください。
- Azure OAuthコールバックのGitLabインストールのURLを必要とするリダイレクトURI。
クライアントIDとクライアントシークレットを保存します。クライアントシークレットは一度しか表示されません。
必要に応じて、create a new application secretできます。
client IDとclient secretはOAuth 2.0に関連する用語です。Microsoftのドキュメントによっては、Application IDとApplication Secretという用語が使用されています。
API権限(スコープ)を追加する
アプリケーションを作成したら、configure it to expose a web API (API)するように設定します。Microsoft Graph APIで、委任された次の権限を追加します。
emailopenidprofile
または、User.Read.Allアプリケーション権限を追加します。
GitLabでMicrosoft OAuthを有効にする
新しいプロジェクトでは、Microsoft identity platform (v2.0) エンドポイントを使用するOpenID Connect protocol(OIDC)を使用する必要があります。
GitLabサーバーで、設定ファイルを開きます。
Linuxパッケージインストールの場合:
sudo editor /etc/gitlab/gitlab.rb自己コンパイルによるインストールの場合:
cd /home/git/gitlab sudo -u git -H editor config/gitlab.yml
共通設定で、
azure_activedirectory_v2をシングルサインオンプロバイダーとして追加します。これにより、既存のGitLabアカウントを持たないユーザーに対して、Just-In-Timeアカウントプロビジョニングが有効になります。プロバイダー設定を追加します。Azureアプリケーションを登録したときに取得した
<client_id>、<client_secret>、<tenant_id>に置き換えます。Linuxパッケージインストールの場合:
gitlab_rails['omniauth_providers'] = [ { "name" => "azure_activedirectory_v2", "label" => "Provider name", # optional label for login button, defaults to "Azure AD v2" "args" => { "client_id" => "<client_id>", "client_secret" => "<client_secret>", "tenant_id" => "<tenant_id>", } } ]alternative Azure cloudsの場合は、
base_azure_urlをargsセクションの下に設定します。たとえば、Azure Government Community Cloud(GCC)の場合:gitlab_rails['omniauth_providers'] = [ { "name" => "azure_activedirectory_v2", "label" => "Provider name", # optional label for login button, defaults to "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', # optional label for login button, defaults to "Azure AD v2" args: { client_id: "<client_id>", client_secret: "<client_secret>", tenant_id: "<tenant_id>" } }alternative Azure cloudsの場合は、
base_azure_urlをargsセクションの下に設定します。たとえば、Azure Government Community Cloud(GCC)の場合:- { name: 'azure_activedirectory_v2', label: 'Provider name', # optional label for login button, defaults to "Azure AD v2" args: { client_id: "<client_id>", client_secret: "<client_secret>", tenant_id: "<tenant_id>", base_azure_url: "https://login.microsoftonline.us" } }
オプションで、OAuth 2.0 scopesパラメータの
scopeをargsセクションに追加することもできます。デフォルトはopenid profile emailです。設定ファイルを保存します。
Linuxパッケージを使用してインストールした場合は、Reconfigure GitLabを更新するか、インストールを自己コンパイルした場合は、restart GitLabを更新します。
GitLabサインインページを更新します。Microsoftのアイコンがサインインフォームの下に表示されます。
アイコンを選択します。Microsoftにサインインし、GitLabアプリケーションを承認します。
既存のGitLabユーザーが新しいAzure ADアカウントに接続する方法については、Enable OmniAuth for an existing userを参照してください。
トラブルシューティング
ユーザーサインインバナーメッセージ: Extern UIDは既に使用されています
サインイン時に、Extern UID has already been takenというエラーが表示されることがあります。
これを解決するには、Rails consoleを使用して、アカウントに接続中の既存のユーザーがいるかどうかを確認します。
extern_uidを見つけます:id = Identity.where(extern_uid: '<extern_uid>')コンテンツを印刷して、その
extern_uidに添付されているユーザー名を見つけます:pp id
extern_uidがアカウントに添付されている場合は、ユーザー名を使用してサインインできます。
extern_uidがどのユーザー名にも添付されていない場合、ゴーストレコードになる削除エラーが原因である可能性があります。
次のコマンドを実行して、IDを削除してextern uidをリリースします:
Identity.find('<id>').delete