バージョン 2.8.92 から、Semaphore は OpenID を介した認証をサポートしています。 この記事では、Ansible Semaphore を設定して GitLab を介してユーザーを認証する方法について説明します。

OpenID を介した認証の設定は、プロバイダー自体、つまり GitLab の設定から始まります。

1. GitLab にアプリケーションを作成する

GitLab を介した認証を有効にするには、GitLab アカウントの設定でアプリケーションを作成する必要があります。

  1. GitLab アカウントの設定のアプリケーションセクションに移動します: https://gitlab.com/-/profile/applications
  2. 必要なフィールドを入力します:
    • リダイレクト URL: http://localhost:3000/api/auth/oidc/gitlab/redirect
    • スコープ: openidprofileemail

    gitlab app create

  3. アプリケーションを保存をクリックすると、次の画面が表示されます:
  4. gitlab app config
  5. 秘密鍵をどこかにコピーして保存します(Semaphore の設定に必要になります)そして 続ける をクリックします。
  6. アプリケーションが準備完了です。
  7. gitlab app list

2. Semaphore の設定ファイルに OpenID 設定を追加する

ご存知のように、Semaphore の設定は、設定ファイル(通常は config.json)に JSON 形式で保存されています。

GitLab を OpenID プロバイダーとして使用できるように、次の設定を追加する必要があります:

"oidc_providers": {
   "gitlab": {
       "display_name": "GitLab",
       "provider_url": "https://gitlab.com",
       "client_id": "アプリケーション ID",
       "client_secret": "秘密",
       "redirect_url": "http://localhost:4000/api/auth/oidc/gitlab/redirect"
   }
}

3. OpenID/GitLab 認証で Semaphore を起動する

設定ファイルの変更を保存したら、新しい設定で Semaphore を起動または再起動してください。

Semaphore のログインページに新しい「GitLab」ボタンが表示されます。

semaphore login screen