Consent¶
承認リクエスト中に、IdentityServerにユーザの同意が必要な場合、ブラウザは同意ページにリダイレクトされます。
同意は、エンドユーザーがクライアントにリソース(IDまたはAPI)へのアクセスを許可するために使用されます。これは通常、サードパーティのクライアントにのみ必要で、クライアント設定でクライアントごとに有効/無効にすることができます。
Consent Page¶
ユーザーが同意を与えるためには、ホスティングアプリケーションによって同意ページを提供する必要があります。クイックスタートUIは、同意ページの基本的な実装を持っています。
同意ページは通常、現在のユーザーの表示名、アクセスを要求するクライアントの表示名、クライアントのロゴ、クライアントに関する詳細情報のリンク、およびクライアントがアクセスを要求しているリソースのリストを表示します。また、同じクライアントのために今後再度尋ねられないように、同意を "記憶"する必要があることをユーザーに示すこともできます。
ユーザーが同意した後、同意ページは同意をIdentityServerに通知しなければならず、その後、ブラウザーは許可エンドポイントにリダイレクトされなければなりません。
Authorization Context¶
IdentityServerは、承認要求のパラメータを含む同意ページにreturnUrlパラメータ(ユーザ対話オプションで設定可能)を渡します。これらのパラメータは、同意ページのコンテキストを提供し、インタラクションサービスのヘルプを使用して読むことができます。GetAuthorizationContextAsyncAPIは、のインスタンスを返しますAuthorizationRequest。
クライアントおよびリソースに関する追加の詳細は、IClientStoreおよびIResourceStoreinterfaces を使用して取得できます。
Informing IdentityServer of the consent result¶
インタラクションサービスのGrantConsentAsyncAPI は、同意ページがIdentityServerに同意の結果を通知することを許可します(これは、クライアントアクセスを拒否することもできます)。
IdentityServerは同意の結果を一時的に保持します。この永続性は、デフォルトでクッキーを使用します。これは、結果を認可エンドポイントに戻すのに十分なだけ持続する必要があるためです。この一時的な永続性は、「私の同意を覚えてください」機能で使用されていた永続性とは異なります(ユーザーに「同意してください」のままです)。同意ページと認可リダイレクトの間に他の永続性を使用する場合はIMessageStore<ConsentResponse>、実装をDIに実装して登録することができます。
Returning the user to the authorization endpoint¶
同意ページがIdentityServerに結果を通知すると、ユーザーはreturnUrlにリダイレクトできます。あなたの同意ページは、returnUrlが有効であることを確認することによって、開いているリダイレクトに対して保護する必要があります。これはIsValidReturnUrl、対話サービスを呼び出すことによって行うことができます。また、GetAuthorizationContextAsyncnull以外の結果を戻す場合は、returnUrlが有効であると信頼することもできます。