我想確保一個.NET Web API服務。我將使用SSL,但我還需要限制每個用戶可以調用的Web API調用,具體取決於用戶的權限。Web API:基本認證或基於SSL的HMAC?
從我讀到的,REST/HTTP應該是無狀態的,所以在技術上你不應該能夠維持任何會話狀態,但是圍繞這一點有some ways。
一種是使用basic authentication。憑據隨每個請求一起發送。雖然這在安全性方面可能沒有問題,因爲它們是通過SSL傳輸的,但實際上並不實際,因爲每次都需要大量開銷來重新對數據庫進行身份驗證。 (有可能將它們緩存在內存中,但我懷疑這是最好的方式。)
另一個可能是使用HMAC(example implementation)來控制對API調用的訪問。有一個在這個article,說評論:
只是要清楚,是在自己的HTTPS服務,實施這個的人:你不需要實現HMAC SSL的!絕對沒有理由浪費時間和浪費複雜性。不要這樣做。使用基本身份驗證並完成它。
由於上述原因,我不同意這種觀點(使用HMAC進行一次認證和控制比每次認證更加實際)。
使用HMAC在通過SSL進行工作時爲Web API調用提供安全性,還是存在任何我缺少的點是否是一種很好且有效的做法?
基本的ist便宜且速度非常快,如果你做得對,數據庫查找速度非常快。 –
是的,但如果每次用戶會話都做一次,那麼做10萬次就太浪費了。 – Gigi