附録 A. ユースケース
この附録では、この仕様を利用できるさまざまな方法について説明します。これには、必要になる可能性のあるいくつかの選択肢の説明が含まれます。選択肢の中には独立しており、組み合わせて使用できるものもあれば、相互に関連しているものもあります。
A.1. オープン対保護された動的クライアント登録
A.1.1. オープン動的クライアント登録
オープン登録をサポートする認可サーバーは、初期アクセストークンなしで登録を行うことを許可します。これにより、すべてのクライアントソフトウェアが認可サーバーに登録できるようになります。
A.1.2. 保護された動的クライアント登録
保護された登録をサポートする認可サーバーは、登録リクエストを行う際に初期アクセストークンを使用することを要求します。クライアントまたは開発者がこの初期アクセストークンを受信する方法と、認可サーバーがこの初期アクセストークンを検証する方法はこの仕様の範囲外ですが、一般的なアプローチは、開発者が認可サーバーの手動事前登録ポータルを使用し、開発者に初期アクセストークンを発行することです。
A.2. ソフトウェアステートメントを使用しない、または使用した登録
A.2.1. ソフトウェアステートメントを使用しない登録
登録リクエストでソフトウェアステートメントが使用されない場合、認可サーバーは、クライアントメタデータ値が権限によってデジタル署名または MAC 処理されていない(したがって証明されていない)状態で使用することを許可する必要があります。(この選択はオープン対保護の選択とは独立しており、初期アクセストークンは別の可能な証明形式であることに注意してください。)
A.2.2. ソフトウェアステートメントを使用した登録
ソフトウェアステートメントは、登録リクエストで使用して、一連のクライアントメタデータ値に対する権限による証明を提供できます。これは、認可サーバーが登録を一連の権限によって証明されたクライアントソフトウェアに制限したい場合、または複数の登録リクエストが同じクライアントソフトウェアを参照していることを知りたい場合に役立ちます。
A.3. クライアントまたは開発者による登録
A.3.1. クライアントによる登録
一部のユースケースでは、クライアントソフトウェアは、認可サーバーと対話するために必要なクライアント識別子およびその他の情報を取得するために、認可サーバーに自分自身を動的に登録します。この場合、認可サーバーのクライアント識別子はクライアントソフトウェアにパッケージされていません。
A.3.2. 開発者による登録
場合によっては、開発者(または開発者が使用している開発ソフトウェア)が、認可サーバーまたは一連の認可サーバーにクライアントソフトウェアを事前登録します。この場合、認可サーバーのクライアント識別子値をクライアントソフトウェアと一緒にパッケージ化できます。
A.4. クライアントインスタンスごとまたはクライアントソフトウェアごとのクライアント ID
A.4.1. クライアントソフトウェアインスタンスごとのクライアント ID
場合によっては、クライアントソフトウェアの各デプロイされたインスタンスが動的に登録され、異なるクライアント識別値を取得します。これは、たとえば、コードフローが使用されている場合に有利である可能性があります。これにより、各クライアントインスタンスが独自のクライアントシークレットを持つこともできるためです。これは、ソフトウェアとパッケージ化されたクライアントシークレット値の秘密を維持できないが、インスタンスごとのクライアントシークレットの秘密を維持できる可能性があるネイティブクライアントに役立ちます。
A.4.2. クライアントソフトウェアのすべてのインスタンス間で共有されるクライアント ID
場合によっては、クライアントソフトウェアの各デプロイされたインスタンスが共通のクライアント識別子値を共有します。たとえば、これは、クライアントシークレットが関与していない場合に暗黙的フローを使用するブラウザ内クライアントでよくあることです。特定の認可サーバーは、たとえば、ソフトウェアステートメント値とクライアント識別子値の間のマッピングを維持し、特定のソフトウェアのすべての登録リクエストに対して同じクライアント識別子値を返すことを選択する場合があります。認可サーバーがそうする状況と、この場合に必要な特定のソフトウェアステートメント特性は、この仕様の範囲外です。
A.5. ステートフルまたはステートレス登録
A.5.1. ステートフルクライアント登録
場合によっては、認可サーバーは登録されたクライアントに関する状態を維持し、通常はクライアント識別子値を使用してこの状態にインデックスを付けます。この状態には、通常、クライアント登録に関連付けられたクライアントメタデータ値と、場合によっては認可サーバーの実装に固有の他の状態が含まれます。ステートフル登録が使用される場合、この状態を取得および/または更新するための操作がサポートされる場合があります。ステートフル登録に対する 1 つの可能な操作セットは [RFC7592] で説明されています。
A.5.2. ステートレスクライアント登録
場合によっては、認可サーバーは、登録されたクライアントに関するローカル状態を維持しない方法で実装されます。これを行う 1 つの方法は、すべての登録状態を返されたクライアント識別子値にエンコードし、おそらく状態を認可サーバーに暗号化して状態の機密性と完全性を維持することです。