データローダーの64.1から使えるみたいですが、今一つよくわからない
OAuth 2.0 の Web Server Flow with PKCE (Proof Key for Code Exchange) は、従来の Authorization Code Flow に PKCE を組み合わせた仕組みで、セキュリティを強化するために使われます。特に SPA (Single Page Application) や モバイルアプリなど、クライアントシークレットを安全に保持できない環境で有効です。
処理の流れ
- クライアントが認可リクエストを送信
- クライアント(Webサーバー)は認可サーバーにリクエストを送ります。
- このとき code_challenge(PKCEの一部)を含めます。
- code_challenge は code_verifier をハッシュ化した値(通常は SHA256)
GET /authorize?
response_type=code
&client_id=CLIENT_ID
&redirect_uri=REDIRECT_URI
&scope=openid profile
&state=xyz
&code_challenge=HASHED_VERIFIER
&code_challenge_method=S256
2. ユーザー認証 & 認可コード発行
- 認可サーバーはユーザー認証後、authorization_code をクライアントに返します。
3. トークンリクエスト
- クライアントは authorization_code と code_verifier を使ってトークンエンドポイントにアクセスします。
- 認可サーバーは code_verifier をハッシュ化し、最初に送った code_challenge と一致するか確認します。
POST /token
grant_type=authorization_code
&code=AUTH_CODE
&redirect_uri=REDIRECT_URI
&client_id=CLIENT_ID
&code_verifier=ORIGINAL_VERIFIER
4. アクセストークン発行
- 検証が成功すると、アクセストークン(+リフレッシュトークン)を返します。
PKCEの役割
- 通常の Authorization Code Flow は「認可コード奪取攻撃」に弱い。
- PKCE は code_verifier と code_challenge により、攻撃者が認可コードを盗んでもトークン交換できないようにする。
特徴
- Web Server Flow はサーバー側でトークンを安全に管理できる。
- PKCE は 追加のセキュリティ層で、モバイルやSPAだけでなく、Webサーバーでも推奨。
PKCE (Proof Key for Code Exchange) は、OAuth 2.0 の認可コードフローを安全にするための仕組みであり、ユーザー名やパスワードは不要です。
エラーメッセージに「use Username Password」と出る理由
これは、PKCEフローが失敗した場合に、フォールバックとしてリソースオーナーパスワード認証(ROPC)を使えという意味です。
これもフローは成功してそうなんだけど、データローダではエラーです。トークンが取得できていないのかもしれない