メインコンテンツへスキップ
vsql_oauth2 を使うと、アカウントがパスワードの代わりに JWT でサインインできます。この拡張機能は、JWKS エンドポイントから取得した鍵または 1 つの静的な公開鍵に対してトークンの署名を検証し、トークンの有効期限が切れていないことを確認し、トークン内のクレームを VillageSQL アカウントにマッピングします。認証情報を発行する場所は、引き続きあなたの ID プロバイダーだけです。
この拡張機能はプレビュー機能を使用するため、vsql_allow_preview_extensions が ON である必要があります。サーバーを --vsql_allow_preview_extensions=ON で起動するか、SET PERSIST vsql_allow_preview_extensions = ON を実行してください。そうでない場合、INSTALL EXTENSION は拒否されます。

インストール

インストールスクリプト、Docker イメージ、またはリリース tarball で VillageSQL をインストールした場合、vsql_oauth2.veb はすでにサーバーの lib/veb/ ディレクトリにあります。1 つのステートメントでサーバーにインストールします。
インストールされたことを確認します。
自分でビルドするには、リポジトリのビルド手順に従ってください。

追加される機能

SQL 関数ではなく、認証プラグインを追加します。アカウントを作成するときにプラグインを指定すると、そのアカウントはトークンを提示して認証するようになります。
セッションは、接続したアカウントではなく、トークンが指名するアカウントとして実行されます。その名前は username_claim のクレーム (デフォルトは sub) が供給します。その値が analyst であれば、上のステートメントだけで十分です。メールアドレスなど別のものを指名する場合は、そのアカウントも作成し、接続するアカウントからプロキシさせます。
ACCOUNT LOCK は誰も alice@example.com として直接サインインできないようにしますが、ロックされたアカウントに対してもプロキシの付与は機能します。validate_password が動作しているサーバーは、ロックの有無にかかわらず、パスワードのないアカウントの作成を拒否し、ERROR 1819 (HY000): Your password does not satisfy the current policy requirements と答えます。それに該当する場合は、誰も持っていないパスワードをアカウントに与えてください。 プロキシの付与がない場合、ログインは ERROR 6126 (HY000): Access denied for user 'oidc_user'@'localhost', missing proxy privilege. で拒否されます。 それ以外はすべて設定です。 RSA 署名は RS256、RS384、および RS512 として、ECDSA は ES256、ES384、および ES512 として受け付けられます。
auto_create と auto_grant はデフォルトで無効で、そのデフォルトが安全な設定です。これらを有効にすると、誰がここにアカウントを持ち、何に到達できるかを ID プロバイダーが決めることになるため、有効にする前に roles_filter を絞ってください。auto_grant = SYNC はさらに進んで、オペレーターがアカウントの DEFAULT ROLE として設定したロールを除き、トークンがクレームしていないアカウントのロールをすべて取り消します。
SET PERSIST で書き込んだ設定は再起動後も残りますが、UNINSTALL EXTENSION はそれを削除します。アンインストールと再インストールの後は、すべての設定がデフォルトに戻り、再起動しても古い値は戻りません。

ステータス変数

関連項目