我一直在閱讀OAuth2規範,但我無法弄清楚一件事。沒有客戶端密碼(現在推薦用於單頁應用程序)的授權碼不是非常不安全的,因爲它可以輕鬆用於網絡釣魚?讓我解釋一下:OAuth2沒有客戶端密鑰 - 可能的網絡釣魚?
- 客戶端重定向資源所有者到授權服務器,傳遞重定向URL和客戶端ID。
- 資源所有者批准請求,授權服務器將他重定向到給定的重定向URL並傳遞授權碼。
現在,實際上,請求授權的客戶端是一個釣魚網站,用戶不幸意識到這一點。傳遞給授權服務器的重定向URL指向惡意客戶端,而不是合法的客戶端。客戶ID是公開信息,因此建立這樣的網站相當容易。
如果需要客戶端密鑰,會發生什麼情況?
- 惡意客戶端將收到授權碼,但它不知道合法的客戶端密碼。
- 資源服務器將拒絕發送訪問令牌,因爲沒有提供有效的客戶端密鑰。用戶信息是安全的。
但是如果資源服務器不需要客戶端密鑰呢?
- 惡意客戶端會收到授權碼,即使它不知道客戶端密碼,它也會請求訪問令牌。
- 資源服務器將接受請求,因爲提供了有效的授權碼和客戶端ID,並且不需要客戶端密鑰。惡意客戶端獲取訪問令牌並且用戶信息受到威脅。
我是否錯過了一些東西,或者這是正確的,並且沒有什麼可以使OAuth2與單頁面應用程序更安全嗎?