コンテンツにスキップ

シングルサインオン

シングルサインオン(SSO)を使用すると、ユーザーはユーザー名とパスワードを入力する代わりに、外部アイデンティティプロバイダーを通じてjvmguardにサインインできます。jvmguardは、OpenID Connect (OIDC)互換の任意のプロバイダーをサポートし、最も一般的なプロバイダーにはプリセットがあります。SSOは既存のローカルおよびLDAP認証と並行して実行されるため、3つの方法すべてを同時にアクティブにできます。

SSOが有効な場合、ログインページには設定されたプロバイダーごとに追加のボタンが表示されます。ユーザーはボタンをクリックし、アイデンティティプロバイダーで認証し、jvmguardにリダイレクトされます。ユーザーが認可されている場合、jvmguardは割り当てられたアクセスレベルでセッションを作成します。

SSOクライアントIDとシークレットは環境変数でオーバーライドできます。サーバー設定を参照してください。

各SSOプロバイダーでは、アイデンティティプロバイダーのアプリケーション設定にリダイレクトURIを登録する必要があります。リダイレクトURIは次の形式です。

http://<jvmguard-host>:<port>/login/oauth2/code/<slug>

ここで、<slug>はプロバイダーの表示名を小文字に変換し、英数字以外の文字をハイフンに置き換えたものです。例えば、「Keycloak」という名前のプロバイダーのリダイレクトURIはhttp://localhost:8020/login/oauth2/code/keycloakです。

さらに、ログアウトリダイレクトURI http://<jvmguard-host>:<port>/loginを登録して、ユーザーがアイデンティティプロバイダーでサインアウトした後にjvmguardがログインページにリダイレクトできるようにする必要があります。一部のアイデンティティプロバイダーは、これを「post logout redirect URI」または「allowed logout URL」と呼びます。このURIが登録されていない場合、ユーザーがログアウトするときにアイデンティティプロバイダーはエラーを表示します。

アクセスルールは、どのユーザーがSSOプロバイダー経由でサインインできるか、およびどのアクセスレベルを受け取るかを決定します。空のアクセスルールリストは、事前に作成されたユーザーのみがサインインできることを意味します。これがデフォルトで、最も制限的なモードです。

アイデンティティプロバイダートークンからのグループまたはロールクレームに一致するルールを追加できます。各ルールはクレーム値をアクセスレベルにマッピングします。*と表示される特別なキャッチオールルールは、より具体的なルールに一致しない設定ドメイン内のすべてのユーザーに一致します。キャッチオールルールはプロバイダーごとに1つだけ許可されます。

次のシナリオは、アクセスルールの動作を示しています。

  • ルールなし: jvmguardで事前に作成したユーザーのみがサインインできます。アクセスレベルはユーザー定義から取得されます。
  • 特定のグループルール: トークンに一致するグループクレーム値が含まれるユーザーは、割り当てられたアクセスレベルで自動作成されます。一致するグループがないユーザーは、キャッチオールルールも設定されていない限り、拒否されます。
  • キャッチオールのみ: アイデンティティプロバイダーで認証でき、ドメイン制限を通過するすべてのユーザーが、キャッチオールルールに割り当てられたアクセスレベルで自動作成されます。
  • 特定のルールとキャッチオール: 特定のグループルールに一致するユーザーは、そのルールからより高いアクセスレベルを取得します。他のすべてのユーザーは、キャッチオールルールからアクセスレベルを取得します。

Google Workspaceは、OpenID Connect経由でグループクレームを公開しません。Googleプロバイダーの場合、アクセスルールは、設定されたドメイン内のすべてのユーザーに適用されるキャッチオールルールに限定されます。

SSOユーザーは2つの方法で作成できます。

事前作成ユーザー: 「ユーザーとロール」で、タイプ「SSO」のユーザーを作成し、アイデンティティプロバイダーでのユーザーのメールアドレスを入力します。アクセスレベルはユーザーが割り当てます。ユーザーが初めてサインインすると、jvmguardはメールアドレスを一致させ、アイデンティティプロバイダーのサブジェクト識別子をユーザーエントリに関連付けます。

自動作成ユーザー: アクセスルールが一致し、事前作成ユーザーが存在しない場合、jvmguardは一致したルールのアクセスレベルで新しいユーザーエントリを作成します。ユーザーのフルネームは、利用可能な場合、アイデンティティプロバイダートークンから設定されます。

ユーザーが手動または自動で作成されると、「ユーザーとロール」でいつでもアクセスレベルを変更できます。変更は次回のログイン時に有効になります。

ローカルおよびLDAP認証との共存

Section titled “ローカルおよびLDAP認証との共存”

SSOは、ローカルまたはLDAP認証を置き換えるものではありません。3つの方法すべてを同時にアクティブにできます。各ユーザーには単一のユーザータイプがあります。「ローカル」、「LDAP」、または「SSO」です。ユーザータイプは、ユーザーがどのように認証するかを決定します。

「ローカル」または「LDAP」として作成されたユーザーは、アイデンティティプロバイダーで同じメールアドレスが使用されている場合でも、SSOボタン経由でサインインできません。逆に、「SSO」ユーザーは、そのユーザータイプにはパスワードが保存されていないため、パスワードでサインインできません。

ユーザーをある認証方法から別の認証方法に移行したい場合は、「ユーザーとロール」でユーザータイプを変更します。現在ログインしている既存のユーザーは削除できないことに注意してください。