GoでTwitter APIのOAuth 2.0 Authorization Code Flow with PKCEを叩く


概要

Twitter APIのOAuth 2.0 Authorization Code Flow with PKCEをcode_verifierとcode_challengeを生成して叩いている記事が見つからなかったので、実際に生成しつつTwitterクライアントライブラリで叩いてみました。

なお、この記事ではクライアントという単語はOAuth2.0クライアントのことを指します。

OAuth 2.0 Authorization Code Flow with PKCE

OAuth 2.0 Authorization Code Flow with PKCEはTwitter APIの認証方法の一つです。ツイートの検索などログインしなくてもできる処理はクライアントのみ(OAuth 2.0 Bearer Token (app-only))で実行できます。

一方でアカウントのフォローやリツイートなどの操作は「誰が行ったか」の情報が必要です。この場合、リツイートなどの操作を実行するアカウントによってクライアントを認証する機能なければ、クライアントが操作を行うことはできません。

そこでOAuth 2.0 Authorization Code Flow with PKCEを利用します。OAuth 2.0 Authorization Code Flow with PKCEはAuthorization Code FlowをPKCEで拡張した方式です。 では以下のように定義されています。

An extension to the authorization code flow to prevent several attacks and to be able to perform the OAuth exchange from public clients securely.

Authorization Code Flow(認可コードフロー)はOAuth2.0の認可フローの一つです。Client Secretを使い、認証の機能を持ちます。ここでは詳しいフローを書きませんが、詳しくはAuthleteの川崎さんの記事などが参考になります。

PKCEpixyと発音するらしい)とはProof Key for Code Exchangeの略で、Public Clientを認可コード横取り攻撃から認可コードフローを保護する拡張です。詳しい仕様は