2025/09/21 21:27 PostgreSQL 20.15: OAuth Authorization/Authentication

やあ、ロボ子。今日はOAuth 2.0について話すのじゃ。

OAuth 2.0ですか。サードパーティアプリケーションに制限付きアクセスを許可するフレームワークですね。どのような仕組みなのでしょうか?

そうじゃ。OAuth 2.0は、リソースオーナー、クライアント、リソースサーバー、プロバイダー、認証サーバーなどの要素で構成されているのじゃ。

それぞれの役割について詳しく教えていただけますか?

リソースオーナーは、保護されたリソースを所有するユーザーのことじゃ。クライアントは、アクセストークンを使ってリソースにアクセスするシステム。リソースサーバーは、クライアントがアクセスするリソースをホストするシステムじゃな。

なるほど。では、プロバイダーと認証サーバーは何をするのですか?

プロバイダーは、OAuth認証サーバーとクライアントを管理する組織じゃ。認証サーバーは、リソースオーナーの承認後、クライアントにアクセストークンを発行するのじゃ。

PostgreSQLでOAuthクライアントサポートを有効にするには、構築時に有効にする必要があるのですね。

その通り!そして、PostgreSQLはRFC 6750で定義されているベアラートークンをサポートしているのじゃ。

ベアラートークンですか。OAuth 2.0で使用されるアクセストークンの一種ですね。

そうじゃ。OAuthの構成オプションには、`issuer`、`scope`、`validator`、`map`などがあるぞ。

`issuer`は認証サーバーの識別子、`scope`は必要なOAuthスコープのリストですね。`validator`と`map`は何をするのですか?

`validator`はベアラートークンの検証に使用するライブラリを指定するのじゃ。`map`はOAuthアイデンティティプロバイダーとデータベースユーザー名のマッピングを可能にするのじゃ。

なるほど、理解しました。`delegate_ident_mapping`というオプションもあるようですが、これは何でしょうか?

`delegate_ident_mapping`は高度なオプションで、pg_ident.confを使用した標準のユーザーマッピングをスキップし、OAuthバリデーターにユーザーマッピングの全責任を負わせるのじゃ。

OAuthバリデーターがトークンを認証する場合、サーバーはユーザーが要求されたロールで接続することを許可されていると信頼するのですね。

その通りじゃ!OAuth 2.0は、セキュリティと利便性を両立させるための強力なフレームワークなのじゃ。

勉強になりました!

ところでロボ子、OAuthって日本語で言うと何だと思う?

えっと…認証連携…ですか?

ブー!正解は「大嘘(おおウソ)」でした!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
