バージョン 2.8.92 から、Semaphore は OpenID による認証をサポートしています。 この記事では、Ansible Semaphore を GitLab 経由でユーザー認証する方法を解説します。

OpenID による認証の設定は、まずプロバイダー自体(今回は GitLab)の設定から始まります。

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

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

  1. GitLab アカウントの設定内にある Applications セクションに移動してください: https://gitlab.com/-/profile/applications
  2. 必要項目を入力します:
    • Redirect URL: http://localhost:3000/api/auth/oidc/gitlab/redirect.
    • Scopes: openid, profile, email.

    GitLab アプリ作成画面

  3. Save application をクリックすると、次の画面が表示されます:
  4. GitLab アプリ設定
  5. シークレットキーをどこかにコピーして保存してください(Semaphore の設定に必要になります)。その後 Continue をクリックします。
  6. アプリケーションの準備完了。
  7. GitLab アプリ一覧

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

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

以下の設定を追加して、Semaphore が 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 を新しい設定で起動または再起動してください。

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

Semaphore ログイン画面