簡體   English   中英

如何讓用戶使用Implicit流程登錄?

[英]How do I keep the user logged-in with Implicit flow?

據我所知,隱式流的最終結果是訪問令牌,它允許客戶端(在我的情況下是JS SPA)對資源服務器(API)進行身份驗證。

訪問令牌通常只有約1小時有效,然后到期 - 使其無用

我的JS應用程序應該怎么做? 將用戶重定向回auth服務器是不現實的,因為用戶必須每1小時重新輸入一次憑據!

我也知道隱式流不支持刷新令牌,所以我也不能使用它們。

有沒有辦法堅持用戶的登錄? 像Facebook這樣的東西會讓你無限期地登錄?

只是為了澄清一下,你問的是OAuth 2.0 RFC中詳細介紹的隱式流,而不是OpenID Connect,它更多地涉及用戶的身份驗證?

隨着隱流必須定期調用的授權端點,以獲得新的令牌,但如果用戶保持登錄到他們的身份提供商然后他們應該不會提示重新提交他們的憑據,令牌將返回一個哈希代碼在重定向uri中,無需用戶交互。

您可以使用AJAX調用在反向通道上獲取令牌,這樣您的SPA應用程序用戶體驗不會受到獲取新令牌的影響。

要解決您在問題中突出顯示的要點:

訪問令牌通常只有約1小時有效,然后到期 - 使其無用。

正確!

然后用戶必須每1小時重新輸入他們的憑證!

不必要。

如果用戶保持登錄身份提供者(例如,facebook,google),則用戶和該提供者之間將存在瀏覽器cookie。 這實際上意味着身份提供者不需要用戶重新輸入憑證。 授權服務器應該能夠返回一個不需要交互的令牌。

有沒有辦法堅持用戶的登錄?

您無法通過SPA控制它。 它完全依賴於用戶保持登錄身份提供者。 如果他們保持登錄Facebook,谷歌(或您的應用程序使用的任何IDP),那么您應該能夠以非交互方式獲取令牌。

本文很好地解釋了如何實現隱式流程。

如果OP上的會話仍處於活動狀態(可能通過cookie),則OpenID Connect有一種機制來刷新(隱藏)iframe中的令牌: prompt=none

根據規范 ,發送此流程時......

授權服務器不得顯示任何身份驗證或同意用戶界面頁面。 如果最終用戶尚未經過身份驗證,或者客戶端沒有對所請求的聲明進行預先配置的同意,或者不滿足處理請求的其他條件,則會返回錯誤。 錯誤代碼通常是login_required,interaction_required或第3.1.2.6節中定義的其他代碼。 這可以用作檢查現有身份驗證和/或同意的方法。

prompt=none也是從會話管理規范中引用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM