2023年3月3日金曜日

GitlabでOneloginのOpenIDConnectを使ってログインする方法

GitlabでOneloginのOpenIDConnectを使ってログインする方法

概要

Gitlab のログインに onelogin の OpenIDConnect (OIDC) を使ってログインする方法を紹介します

ちなみに onelogin の OIDC は有料プランでないと使えないので注意しましょう

環境

  • Gitlab-ee 15.6.7
  • Onelogin 2023/03/01 時点

Onelogin側のOIDCアプリの設定

1. 認証情報の確認

作成した OIDC アプリの「SSO」メニューで連携に必要な情報を確認できます

このページ内の

  • Client ID
  • Client secret
  • Issuer URL

はメモしておきましょう
また画面にはないですが少し下に「Token Endpoint」という項目があるのでそこが「Basic」になっていることを確認しておきましょう

2. リダイレクトURLの設定

認証後のリダイレクト URL を設定します
これは Gitlab 側から指定された URL があるのでそれを指定します

Gitlab の URL + /users/auth/openid_connect/callback を指定すれば OK です
またこの URL は gitlab.rb 編集時にも使います

OneLogin側のOIDCアプリへログインさせるユーザの追加

OIDC アプリを使って認証させるユーザは個別に追加する必要があります
ユーザ個別でも追加できますしロール単位でも追加できるので認証させたいユーザを追加しましょう

動作確認のログイン時に Could not authenticate you from OpenIDConnect because "End-user does not have access to this application". が表示される場合はこのユーザの追加がうまく行っているか確認してみてください

gitlab.rb の編集

あとは gitlab.rb を編集します

gitlab_rails['omniauth_allow_single_sign_on'] = ['openid_connect']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_saml_user'] = false
gitlab_rails['omniauth_providers'] = [
  {
    name: "openid_connect",
    label: "Onelogin OIDC",
    args: {
      name: "openid_connect",
      scope: ["openid", "profile", "email"],
      response_type: "code",
      issuer: "https://xxxxxx.onelogin.com/oidc/2",
      discovery: true,
      client_auth_method: "basic",
      send_scope_to_token_endpoint: "true",
      client_options: {
        identifier: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        redirect_uri: "https://your.gitlab.com/users/auth/openid_connect/callback"
      }
    }
  }
]

Onelogin の OIDC の SSO ページを確認しながら自分で入力する項目は

  • args.issuer
  • args.client_options.identifier
  • args.client_options.secret
  • args.client.options.redirect_uri

になります

icon, uid_field, pkce は省略しています
特に何も特別なことはしていないのでこれがデフォルトの設定になるかなと思います

動作確認

gitlab を reconfigure してログインページを確認しましょう
設定した OIDC のラベル名でログインボタンが表示されれば OK です

最後に

Gitlab + OIDC のログイン設定方法を紹介しました
今回は Onelogin を使いましたが Onelogin 以外の OIDC でも同じような感じで設定できると思います

参考サイト

0 件のコメント:

コメントを投稿