我一直在嘗試瞭解OAuth一段時間,並且仍然留有一些關於工作流的問題和處理使用值的建議。我正在爲學習目的開發一個PHP三段式OAuth 1.0a項目。我將要介紹的步驟在這裏描述; http://wiki.oauth.net/w/page/12238555/Signed%20Callback%20URLsPHP中的工作流OAuth 1.0a
爲什麼在第5步中會返回一個令牌?我認爲令牌與消費者已經知道,就像token_secret一樣。所以它用作消費者發送數據的標識符?或者我誤以爲發送的令牌與步驟2中發送的請求令牌相同?
回調網址在此列爲可選,但在其他規範中則視爲需要。我正在考慮讓人們將他們的回調URL存儲在服務提供商的數據庫中,因爲它不會經常更改或根本不會更改,因此不會在步驟1中將其發送並在步驟5中從數據庫中檢索。
由於RSA哈希方法由於速度和可能的泄漏而不鼓勵,所以每個人都決定採用HMAC方法。那麼我們需要在步驟1和6中發送散列方法嗎?而且,我看到很少有提供其他方法的服務提供商。
使用mt_rand()進行散列並不安全,所以我在考慮使用openssl_random_pseudo_bytes(),它是否安全作爲散列hash_hmac()的關鍵?
我經常看到sha1用於請求和訪問令牌和secret_tokens。是不是更長的哈希像sha256或sha512更安全?如果安全性得到延伸,存儲空間不會成爲問題,對吧?