我已經閱讀了好幾個月,似乎整個事情可能會在我下面總結的內容上有所收斂。我想在最理想的到來:使用授權碼授權而不使用cookie?
- 的OAuth2
- ID連接
- SPA /移動客戶端
- JWT有銀行級別的安全質量爲上述
解決方案組件而言。所以這似乎是有道理的。
- 使用Authorization Code Grant而不使用服務器端會話和cookie,因爲此OAuth流比隱式流更安全。
- 不要創建服務器端會話或cookie(除了可能記住我的cookie來識別客戶端之前是否已經過身份驗證)。這對縮放和整體簡單性更好。
- 將JWT/OpenID連接令牌返回給客戶端,以便客戶端可以使用它來發出API請求並在客戶端內作出授權決定。 (我認爲這是OAuth2混合授權代碼授權/隱式流程是什麼?)。將JWT/OpenID連接令牌存儲在客戶端會話存儲中。
- 擁有短暫的JWT令牌,並在用戶註銷之前提供刷新令牌。客戶端會自動接收刷新令牌,除非它超時/客戶端會話過期或用戶註銷。刷新令牌將由SPA /移動應用正在與之交談的/ OAuth客戶端的邊緣服務器獲取並提供服務。
- 在註銷(或超時)時,從瀏覽器會話存儲中刪除令牌。
難道這是瘋狂的/聽起來合理嗎?它跳過了無效的令牌,但如果令牌的壽命非常短並且客戶端可以獲得刷新令牌,則似乎可以這樣做。我想用Spring-Boot/Spring Security和Angular 4/5來實現這個功能,我想知道我是否錯過了任何明顯的東西,或者有一種更簡單的方法不會犧牲/降低安全性?
你是否也認爲這會通過「銀行」級別的安全標準檢查?
首先閱讀:https://stackoverflow.com/help/how-to-ask 但我猜使用: ID連接與認證的程序庫:https://openid.net/certification/ 遵循OpenID Connect的最佳實踐 https://openid.net/specs/openid-connect-basic-1_0.html https://openid.net/specs/openid-connect-implicit-1_0.html – jwilleke
是啊我知道你的意思是「如何問」提示 - 我覺得我正在用上述方法「跳出框」,所以只是檢查是否有人看到任何瘋狂的事情,或許我應該考慮。 .. – Ole