3 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
為了實(shí)現(xiàn)RESTful,每個(gè)HTTP請求應(yīng)自行攜帶足夠的信息,以便其接收者對其進(jìn)行處理,以使其與HTTP的無狀態(tài)本質(zhì)完全協(xié)調(diào)一致。
好的,我知道每條消息都會自動完成HTTP身份驗(yàn)證-但是如何?
是的,用戶名和密碼隨每個(gè)請求一起發(fā)送。這樣做的常用方法是基本訪問身份驗(yàn)證和摘要訪問身份驗(yàn)證。是的,竊聽者可以捕獲用戶的憑據(jù)。因此,將使用傳輸層安全性(TLS)加密所有發(fā)送和接收的數(shù)據(jù)。
擁有一個(gè)接受GET請求的REST服務(wù)(例如,/ session)是否會很糟糕,您將在其中傳遞用戶名/密碼作為請求的一部分,如果身份驗(yàn)證成功,則返回一個(gè)會話令牌,這可能然后與后續(xù)請求一起傳遞?從REST的角度來看這是否有意義,還是缺少這一點(diǎn)?
因?yàn)樗鼛в袪顟B(tài),所以它不是RESTful的,但是它很常見,因?yàn)樗鼮橛脩籼峁┝吮憷?。用戶不必每次都登錄?/p>
您在“會話令牌”中描述的內(nèi)容通常稱為登錄cookie。例如,如果您嘗試登錄到Y(jié)ahoo !!帳戶中有一個(gè)復(fù)選框,上面寫著“讓我保持登錄狀態(tài)2周”。這實(shí)際上是(用您的話)說:“如果我成功登錄,則使我的會話令牌存活2周?!?nbsp;Web瀏覽器將隨您要求的每個(gè)HTTP請求一起發(fā)送此類登錄cookie(可能還有其他)。

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
REST服務(wù)要求對每個(gè)HTTP請求進(jìn)行身份驗(yàn)證并不罕見。例如,Amazon S3要求每個(gè)請求都具有從用戶憑證,要執(zhí)行的確切請求以及當(dāng)前時(shí)間派生的簽名。該簽名易于在客戶端進(jìn)行計(jì)算,可以由服務(wù)器快速驗(yàn)證,并且對于攔截該簽名的攻擊者使用有限(因?yàn)樗诋?dāng)前時(shí)間)。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
許多人不太清楚REST原理,使用會話令牌并不意味著您總是有狀態(tài),每個(gè)請求發(fā)送用戶名/密碼的原因僅用于身份驗(yàn)證,并且用于發(fā)送令牌(通過登錄生成)流程)只是為了確定客戶端是否具有請求數(shù)據(jù)的權(quán)限,只有在使用用戶名/密碼或會話令牌來確定要顯示的數(shù)據(jù)時(shí),您才違反REST的要求!取而代之的是,您只能將它們用于衰弱(顯示數(shù)據(jù)或不顯示數(shù)據(jù))
在您的情況下,我說是,這是RESTy,但請嘗試避免在REST API中使用本機(jī)php會話,并開始生成自己的哈希令牌,這些令牌在確定的時(shí)間段內(nèi)到期!
- 3 回答
- 0 關(guān)注
- 607 瀏覽
添加回答
舉報(bào)