メインコンテンツまでスキップ

6. Initiating the Authorization Request from a Native App (ネイティブアプリからの認可リクエストの開始)

ユーザー認可を必要とするネイティブアプリは、OAuth 2.0 [RFC6749] の第4.1節に従って認可コードグラントタイプ (Authorization Code Grant Type) で認可リクエスト URI を作成し、ネイティブアプリが受信できるリダイレクト URI (Redirect URI) を使用します。

ネイティブアプリの認可リクエストのリダイレクト URI の機能は、ウェブベースの認可リクエストの機能と似ています。OAuth クライアントのサーバーに認可レスポンスを返すのではなく、ネイティブアプリで使用されるリダイレクト URI はアプリにレスポンスを返します。さまざまなプラットフォームでネイティブアプリに認可レスポンスを返すリダイレクト URI のいくつかのオプションは、第7節で文書化されています。アプリが URI を受信し、そのパラメータを検査できるようにするリダイレクト URI であれば、実行可能です。

パブリックネイティブアプリクライアント (Public Native App Client) は、OAuth の Proof Key for Code Exchange (PKCE [RFC7636]) 拡張を実装しなければならず (MUST)、認可サーバーはそのようなクライアントに対して PKCE をサポートしなければなりません (MUST)。理由は第8.1節で詳述されています。

認可リクエスト URI を構築した後、アプリはプラットフォーム固有の API を使用して、外部ユーザーエージェント (External User-Agent) で URI を開きます。通常、使用される外部ユーザーエージェントはデフォルトブラウザ、つまりシステム上で "http" および "https" スキーム URI を処理するように構成されたアプリケーションです。ただし、異なるブラウザ選択基準や他のカテゴリの外部ユーザーエージェントを使用してもかまいません (MAY)。

この最良現行慣行は、ネイティブアプリの推奨される (RECOMMENDED) 外部ユーザーエージェントとしてブラウザに焦点を当てています。ユーザー認可専用に設計され、ブラウザのように認可リクエストとレスポンスを処理できる外部ユーザーエージェントを使用してもかまいません (MAY)。認可サーバーによって提供されるネイティブアプリなどの他の外部ユーザーエージェントは、同じリダイレクト URI プロパティの使用を含め、この最良現行慣行に定められた基準を満たす可能性がありますが、それらの使用は本仕様の範囲外です。

一部のプラットフォームでは、「アプリ内ブラウザタブ (In-App Browser Tab)」として知られるブラウザ機能をサポートしています。これは、アプリがアプリを切り替えることなくアプリコンテキスト内でブラウザのタブを表示できるもので、共有認証状態やセキュリティコンテキストなどのブラウザの主要な利点を保持します。それらがサポートされているプラットフォームでは、使いやすさの理由から、アプリが認可リクエストにアプリ内ブラウザタブを使用することが推奨されます (RECOMMENDED)。