我使用瀏覽器(Xamarin webview;最初登錄並獲取1小時後過期的訪問令牌)和httpclient(訪問我的webapi端點)的混合。當令牌到期時,我使用/ client/authorize終端使用httpclient(從webview複製的cookie)請求一個新的獲取新的訪問令牌。使用IdentityServer3滑動過期會話cookie
只要餅乾沒有過期,這種方法就行了。
我已經設置了身份服務器在認證Cookie(CookieOptions:ExpireTimeSpan/SlidingExpiration)上有1天的滑動過期。我認爲這會導致(除了獲得一個新的有效令牌)在每次向認證端點發送請求時收到新的cookie時,都會使我登錄。問題在於,使用使用webview。因此,無論我訪問授權端點多少次,我仍然在一天之後退出,並且無法再從身份驗證端點獲取新令牌。
假設我沒有完全採取錯誤的做法,什麼請求應該讓我更新cookies(IdSvr?IdSvr.Session?我仍然需要嗎?),並且有新的到期日期,所以我仍然登錄到IdentityServer?
注意:我確實看過刷新標記,但這些標記不適用於隱式流。我認爲我需要隱式流程,因爲我不應該在分佈式Xamarin應用程序中保存客戶機密。使用cookie似乎是最好的選擇。
我剛剛對此進行了測試,在撰寫本文時,這仍然是最新版本的Identity Server 3樣本。我想知道它是否被破壞,直到我讀到你的答案。 – Barrie
這與ASP.NET窗體身份驗證的行爲相匹配。 「如果在過期時間的一半之前訪問網頁,則不會重置票證到期時間。」 https://support.microsoft.com/en-us/help/910443/understanding-the-forms-authentication-ticket-and-cookie –