OpenID Connect プロバイダーを接続
アイデンティティプロバイダーが SAML ではなく OpenID Connect を使う場合は、このガイドを参照してください。OIDC 認定の発行元であればどれでも機能します — Pocket ID、Keycloak、Auth0、Zitadel、Google Workspace などもすべて同じ手順で、違うのはプロバイダーが値を表示する場所だけです。
前提条件
「前提条件」というセクション- クライアントを作成できる OIDC プロバイダー — そのクライアントIDとIssuer URL(
.well-known/openid-configurationドキュメントが置かれている基底 URL)を控え、クライアントがコンフィデンシャル型の場合はクライアントシークレットも控えます(パブリックな PKCE クライアントにはシークレットはありません) - 自分が管理する Control Center サーバー(サーバー所有者)
- 設定 → サーバー → シングルサインオンを開き、OpenID Connect に切り替えます。
- Issuer URL、クライアントID、そしてプロバイダーが発行していれば**クライアントシークレット(任意)**を入力します。Control Center は発行元の標準ディスカバリドキュメントからエンドポイントを検出するため、プロバイダーごとの設定は不要です。
- プロバイダー側で、そのクライアントにリダイレクト先
https://<your-server>/oidc/callbackを登録します。 - グループが
groups以外のクレームに入っている場合は、グループクレームの名前を設定します。必要ならグループをロールにマッピングします(SSO が所有者ロールを付与することは決してありません)。 - メンバーシップポリシーを選び(全ワークスペースに自動追加、またはワークスペースごとの招待を必須にする)、サインインにOpenID Connectを使用をオンにして接続を保存を押します。
- 接続をテストを押します — サーバーが発行元のディスカバリドキュメントを取得してエンドポイントを確認するので、緑のトーストが出ればブラウザーの往復を除くすべてが機能していることになります。クライアント登録も確認するには、下のチェッカーを使います。
- ログインを試します: Web の接続画面にはOpenID Connectでサインインと表示されるので、そこからサインインするか、
https://<your-server>/oidc/loginを直接開きます。
クレーム(email、name、groups)は、あなたのサーバーが TLS 経由で発行元のトークンエンドポイントから読み取ります — ブラウザーがこれらを渡すことはないため、ローカルでの JWT 署名検証は関与しません。クライアントには openid profile email スコープの要求を許可しておく必要があります。これはまさに Control Center が要求する内容です。
クレームを認証しているのはこの TLS チャネルだけなので、Issuer URL は https でなければなりません — 平文の発行元を使うと、経路上の攻撃者がアイデンティティを好き放題に偽造できてしまいます。http が許可されるのは、ローカル開発向けにループバックの発行元(localhost、127.0.0.1、::1)だけでです。
このページから設定を確認する
「このページから設定を確認する」というセクション下のチェッカーはブラウザー内で実行されます。発行元のディスカバリドキュメントを直接取得するため、このサイトがそれを目にすることはありません。そしてサーバーのルールを適用します。ドキュメントと一致する https の発行元、発行元自身のオリジン上のエンドポイント、PKCE S256、およびクライアントタイプに必要なトークン認証方式です。クライアントIDとサーバーアドレスを指定すると、クライアントとそのリダイレクト URI が登録されているかを示すテストサインインを開けます。クライアントシークレットを求めることはありません。
Runs in your browserYour browser fetches the discovery document straight from your issuer. Add a server address and it also asks that server which sign-in methods it offers. This site never receives what you type.
Test sign-in at your provider
- Your provider's sign-in or consent page: the client ID and redirect URI are registered. You can close the tab.
- An error at your provider: it names what to fix, usually a redirect URI that is not registered or an unknown client ID.
- Your server's "Sign-in failed" page: also a pass. The provider accepted the request and sent you back; your server refuses it only because this page started the sign-in, not your server.