Skip to main content

PKCE を用いた OAuth 2.0 認可コードフロー

はじめに

OAuth 2.0 は、アプリケーションのスコープや複数デバイス間にまたがる認可フローをより柔軟かつ詳細に制御できる、業界標準の認可プロトコルです。OAuth 2.0 を使用すると、ユーザーに代わって特定の権限を付与する、より細かい粒度のスコープを選択できるようになります。  App で OAuth 2.0 を利用できるようにするには、開発者コンソールの App 設定セクションにある認証設定で OAuth 2.0 を有効にする必要があります。

認証情報はどのくらいの期間有効ですか?

デフォルトでは、PKCE を用いた Authorization Code Flow で作成したアクセストークンは、offline.access スコープを使用していない限り、2 時間しか有効ではありません。

リフレッシュトークン

リフレッシュトークンを使用すると、リフレッシュトークンフローを通じてユーザーに再度認可を求めることなく、アプリケーションが新しいアクセストークンを取得できます。 スコープ offline.access が適用されている場合、OAuth 2.0 リフレッシュトークンが発行されます。このリフレッシュトークンを使ってアクセストークンを取得できます。このスコープがリクエストに含まれていない場合、リフレッシュトークンは生成されません。 リフレッシュトークンを使用して新しいアクセストークンを取得する際のリクエスト例は次のとおりです。

App の設定

App の認証設定として OAuth 1.0a または OAuth 2.0 を選択できます。また、App が OAuth 1.0a と OAuth 2.0 の両方を利用できるように有効化することも可能です。 OAuth 2.0 は X API v2 でのみ利用できます。OAuth 2.0 を選択した場合は、App の「Keys and Tokens」セクションで Client ID を確認できます。 

機密クライアント

Confidential clients は、認可されていない第三者に資格情報をさらすことなく、安全な方法で資格情報を保持し、認可サーバーと安全に認証を行い、client secret を安全に保管できるクライアントです。Public clients は、通常ブラウザーやモバイルデバイス上で動作するため、client secrets を使用できません。機密クライアントである App の type を選択した場合、client secret が付与されます。  開発者コンソールで機密クライアントの type を選択した場合、Client Secret も確認できます。選択できるオプションは、Native App、Single page App、Web App、Automated App、bot です。Native App と Single page App は public clients であり、Web App と Automated App または bot は機密クライアントです。 有効な Authorization Header を使用する機密クライアントでは、client id を指定する必要はありません。public client で行うリクエストについては、引き続きリクエストボディに Client Id を含める必要があります。 

スコープ

スコープを使用すると、あなたのAppに対してきめ細かいアクセス権を設定し、必要な権限だけを付与できます。どのスコープがどのエンドポイントに対応しているかの詳細は、認証マッピングガイドを参照してください。

レート制限

ほとんどの場合、レート制限は OAuth 1.0a で認証する場合と同じですが、Tweet lookup と Users lookup のみ例外となります。OAuth 2.0 を使用した Tweet lookup および Users lookup では、App ごとの上限を 15 分あたり 300 リクエストから 900 リクエストに引き上げています。詳細については、レート制限に関するドキュメントをご覧ください。

グラントタイプ

初期ローンチでは、サポートするグラントタイプとして、PKCE を用いた認可コードリフレッシュトークンのみを提供します。今後、対応するグラントタイプを追加する可能性があります。

OAuth 2.0 フロー

OAuth 2.0 では、現在 OAuth 1.0a で利用しているものと同様のフローが使われます。このトピックに関する図と詳細な説明は、こちらのドキュメントを参照してください。 

用語集

パラメーター

OAuth 2.0 の authorize URL を構築するには、認可 URL に以下のパラメーターが含まれていることを確認する必要があります。 

Authorize URL

OAuth 2.0 では、ユーザーが X の「ログイン」と同様の認証フローを通じて認証できるようにするために使用する Authorize URL を作成します。  作成する URL の例を次に示します。
このURLが正しく機能するには、適切なエンコードが必要です。パーセントエンコーディングに関するドキュメントを必ず参照してください。