在授權請求期間,如果IdentityServer需要用戶同意,則瀏覽器將被重定向到同意頁面。 同意用於允許最終用戶授予客戶端對資源(身份或API)的訪問許可權。這通常僅對第三方客戶端是必需的,並且可以在客戶端設置上按客戶端啟用/禁用。 28.1 確認頁 為了讓用戶同意,托管應用程式必須提供同意頁面。該 ...
在授權請求期間,如果IdentityServer需要用戶同意,則瀏覽器將被重定向到同意頁面。
同意用於允許最終用戶授予客戶端對資源(身份或API)的訪問許可權。這通常僅對第三方客戶端是必需的,並且可以在客戶端設置上按客戶端啟用/禁用。
28.1 確認頁
為了讓用戶同意,托管應用程式必須提供同意頁面。該快速入門UI有一個批准頁面的基本實現。
同意頁面通常呈現當前用戶的顯示名稱,請求訪問的客戶端的顯示名稱,客戶端的徽標,有關客戶端的更多信息的鏈接以及客戶端請求訪問的資源列表。允許用戶表明他們的同意應該被“記住”也是很常見的,因此將來不會再次提示同一客戶。
一旦用戶提供了同意,同意頁面必須通知IdentityServer同意,然後必須將瀏覽器重定向回授權端點。
28.2 授權上下文
IdentityServer將returnUrl參數(可在用戶交互選項上配置)傳遞到包含授權請求參數的同意頁面。這些參數提供了同意頁面的上下文,可以在交互服務的幫助下閱讀。該GetAuthorizationContextAsync
API將返回的實例AuthorizationRequest
。
可以使用IClientStore
和IResourceStore
介面獲取有關客戶端或資源的其他詳細信息。
28.3 通知IdentityServer同意結果
該API允許'grantconsentasync'在交互服務頁面通知identityserver同意的結果(這也可能是在客戶端訪問等)。
IdentityServer將暫時保留同意的結果。這種持久性預設使用cookie,因為它只需要持續足夠長的時間來將結果傳回給授權端點。這種臨時持久性與用於“記住我的同意”功能的持久性不同(並且授權端點持續“記住我對用戶的同意”)。如果您希望在同意頁面和授權重定向之間使用其他一些持久性,那麼您可以IMessageStore<ConsentResponse>
在DI中實現並註冊實現。
28.4 將用戶返回到授權端點
一旦同意頁面通知IdentityServer結果,就可以將用戶重定向回returnUrl。您的同意頁面應通過驗證returnUrl是否有效來防止打開重定向。這可以通過調用交互服務的IsValidReturnUrl
來完成。此外,如果GetAuthorizationContextAsync
返回非null結果,那麼您還可以信任returnUrl有效。