vsql_oauth2 を使うと、アカウントがパスワードの代わりに JWT でサインインできます。この拡張機能は、JWKS エンドポイントから取得した鍵または 1 つの静的な公開鍵に対してトークンの署名を検証し、トークンの有効期限が切れていないことを確認し、トークン内のクレームを VillageSQL アカウントにマッピングします。認証情報を発行する場所は、引き続きあなたの ID プロバイダーだけです。
インストール
インストールスクリプト、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 として受け付けられます。
SET PERSIST で書き込んだ設定は再起動後も残りますが、UNINSTALL EXTENSION はそれを削除します。アンインストールと再インストールの後は、すべての設定がデフォルトに戻り、再起動しても古い値は戻りません。ステータス変数
関連項目
- MySQL での JWT 認証 — ログインの実例、クレームのマッピング、および拒否されたトークンが誤ったパスワードのように見える理由
- 拡張機能の管理 — 拡張機能の設定の読み書き方法
- プレビュー機能 — プレビューフラグが有効にするものと、それが約束するもの
- 利用可能な拡張機能 — 完全なカタログ
- villagesql/vsql-oauth2 — ソース、プロバイダー設定の実例、および既知の制限事項