在開發了我的第一個Web門戶(使用railstutorial.org)之後,我現在正在建立我的第一個API(有一些幫助)。API身份驗證:將令牌放置在Cookie或標頭中?
門戶網站的認證與session
以及cookie(如果用戶希望他的登錄被記住)一起使用。
對於API我明白使用session
是不安全的;你只需要使用令牌。因此,就像門戶網站一樣,當用戶登錄到API時,他的憑證將被檢查,如果它們有效,則會生成將摘要存儲到數據庫的令牌。
但後來我知道有那麼三個選項做什麼用的令牌:存儲使用餅乾在用戶的計算機上的令牌,包括令牌參數或使用HTTP標頭。我使用HTTP標頭閱讀API是首選選項。
- 如果使用餅乾,這是相同的門戶網站的「記住我」選項:令牌被存儲在cookie中和令牌的摘要被存儲在數據庫中。每個API請求都會讀取cookie,並檢查它的標記是否與摘要匹配。
- 每次API向用戶發送數據或用戶向API發出調用時,該令牌都將作爲參數包含在內。我知道這會在URL中顯示令牌,這是不可取的。
- 我對使用HTTP標頭的理解失敗。
使用HTTP標頭髮送令牌而不是cookie是什麼意思?它背後的過程/邏輯是什麼?何時使用cookie,參數或HTTP頭?
我的理解是正確的:每次API向用戶發送數據時,它都應該在HTTP頭中包含令牌?用戶對API的每個調用應該包含相同的標記?