簡體   English   中英

PHP REST API身份驗證元數據良好做法

[英]php REST API auth metadata good practice

我正在使用PHP 5.4構建REST api,並放入自己的自定義身份驗證庫。 我密切關注兩足式OAUTH使用的格式。 (參考: http : //www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/

遵循此規范,我需要隨每個請求發送一些元數據,以便我可以安全地對用戶進行身份驗證。

  1. AppId->這用於驗證誰在發送請求。 還知道要使用哪個密鑰來生成HMAC校驗和服務器端。
  2. 時間戳->這是用於處理重放攻擊。
  3. 校驗和->這是一個HMAC哈希值,用於確保請求未被篡改。
  4. 初始身份驗證后,AccessToken->將用於每個請求。

我只是想知道發送所有這些元數據的最佳實踐是什么?

我當時正在考慮創建自定義標頭,然后將其發送到那里。 這樣我就可以將數據與函數所需的實際參數分開,但是我不確定這是最佳實踐。

例如:MY-API-APP-ID:243242,MY-API-TIMESTAMP:123123123等...

要么

所有這些事情是否應該隨每個請求作為參數傳遞?

GET方法呢,應該將它們放在查詢字符串中嗎? (?=時間戳:12312312 = APPID 123123 ...)

謝謝!

實際上,不久前我做了類似的事情。 我將自己的API身份驗證器編寫為Codeigniter庫,並自動加載了它,以便它檢查通過的每個頁面請求。

我決定根據每個請求在自定義標頭中發送所有內容:

Auth-Token
Auth-Device
Auth-Timestamp
Auth-Hash

我不建議僅在GET參數中執行這些操作,因為這樣做會使使用URL變得更麻煩,並且此時有點不再使用RESTful了。

就是說,我確定有人會指出您不應該創建自定義請求標頭,並且說實話,我確定您應該在身份驗證解決方案中使用標頭的做法是標准的。 但是該應用程序和API可以完美運行,因此我對“嗯,它可以工作”的解決方案感到滿意。

但也請注意,我們使用SSL加密了標頭,並防止了任何形式的監聽或中間攻擊。

暫無
暫無

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

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