正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

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とシークレットキーを取得する必要があります。

  1. Azure portalにサインインします。

  2. 複数のAzure Active Directoryテナントをお持ちの場合は、目的のテナントに切り替えてください。テナントIDをメモしてください。

  3. Register an application登録し、次の情報を提供します。

    • Azure OAuthコールバックのGitLabインストールのURLを必要とするリダイレクトURI。https://gitlab.example.com/users/auth/azure_activedirectory_v2/callback
    • アプリケーションの種類。必ずWebに設定してください。
  4. クライアントIDとクライアントシークレットを保存します。クライアントシークレットは一度しか表示されません。

    必要に応じて、create a new application secretできます。

client IDclient secretはOAuth 2.0に関連する用語です。Microsoftのドキュメントによっては、Application IDApplication Secretという用語が使用されています。

API権限(スコープ)を追加する

アプリケーションを作成したら、configure it to expose a web API (API)するように設定します。Microsoft Graph APIで、委任された次の権限を追加します。

  • email
  • openid
  • profile

または、User.Read.Allアプリケーション権限を追加します。

GitLabでMicrosoft OAuthを有効にする

新しいプロジェクトでは、Microsoft identity platform (v2.0) エンドポイントを使用するOpenID Connect protocol(OIDC)を使用する必要があります。

  1. GitLabサーバーで、設定ファイルを開きます。

    • Linuxパッケージインストールの場合:

      sudo editor /etc/gitlab/gitlab.rb
    • 自己コンパイルによるインストールの場合:

      cd /home/git/gitlab
      
      sudo -u git -H editor config/gitlab.yml
  2. 共通設定で、azure_activedirectory_v2をシングルサインオンプロバイダーとして追加します。これにより、既存のGitLabアカウントを持たないユーザーに対して、Just-In-Timeアカウントプロビジョニングが有効になります。

  3. プロバイダー設定を追加します。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_urlargsセクションの下に設定します。たとえば、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_urlargsセクションの下に設定します。たとえば、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パラメータのscopeargsセクションに追加することもできます。デフォルトはopenid profile emailです。

  4. 設定ファイルを保存します。

  5. Linuxパッケージを使用してインストールした場合は、Reconfigure GitLabを更新するか、インストールを自己コンパイルした場合は、restart GitLabを更新します。

  6. GitLabサインインページを更新します。Microsoftのアイコンがサインインフォームの下に表示されます。

  7. アイコンを選択します。Microsoftにサインインし、GitLabアプリケーションを承認します。

既存のGitLabユーザーが新しいAzure ADアカウントに接続する方法については、Enable OmniAuth for an existing userを参照してください。

トラブルシューティング

ユーザーサインインバナーメッセージ: Extern UIDは既に使用されています

サインイン時に、Extern UID has already been takenというエラーが表示されることがあります。

これを解決するには、Rails consoleを使用して、アカウントに接続中の既存のユーザーがいるかどうかを確認します。

  1. extern_uidを見つけます:

    id = Identity.where(extern_uid: '<extern_uid>')
  2. コンテンツを印刷して、そのextern_uidに添付されているユーザー名を見つけます:

    pp id

extern_uidがアカウントに添付されている場合は、ユーザー名を使用してサインインできます。

extern_uidがどのユーザー名にも添付されていない場合、ゴーストレコードになる削除エラーが原因である可能性があります。

次のコマンドを実行して、IDを削除してextern uidをリリースします:

 Identity.find('<id>').delete