我正在編寫一個基於REST的無狀態API,我計劃從幾個不同的地方使用這些API,其中一個將是單頁Javascript Web應用程序。這個想法基本上是讓一個API用於各種不同的客戶端 - 包括那些可能由其他人編寫的API,但仍然可能需要訪問用戶數據 - 而不是針對不同的客戶端使用不同的API。Javascript中的REST API身份驗證
我現在碰到的問題是驗證。理想情況下,我想在這裏使用標準,而不是滾動自己的標準,但我正在努力尋找適合的標準。我也試圖根據誰在打電話來避免不同驗證機制的解決方案。在這個階段,我實際上並不僅僅需要驗證實際使用應用程序的用戶身份 - 通過用戶名和密碼或類似的方式 - 但是如果/當客戶端不是網頁的客戶端想要使用它時,他們應該可能也會被認證。
從我一直在看,看起來最好的方法是使用HTTP基本身份驗證通過HTTPS連接。我忍不住想,但這是錯過了一些東西。顯而易見的替代方案似乎是OAuth 1.0 - 這要求潛在的不安全的Javascript會話知道客戶端密鑰 - 或OAuth 2.0 - 似乎要回到使用SSL上的用戶名/密碼生成訪問令牌,然後使用該訪問令牌再次通過SSL請求,這與HTTP Basic基本相同,但稍微有些混淆。
請注意,我沒有在這裏計算HTTP摘要,只是因爲 - 據我瞭解 - 傳遞給服務器的內容是包含以不可檢索形式(即散列)的密碼的東西,如果我存儲密碼在後端以不可檢索的形式以及我不能比較這兩個...