簡體   English   中英

移動Web服務認證

[英]Mobile Web Service Authentication

我正在用PHP構建REST Web服務,旨在與iOS和android等移動設備一起使用。 基本上,GET請求用於返回帶有請求結果的JSON數據,而POST和DELETE請求用於向服務添加數據。

基本上,我需要實現一個用戶登錄/身份驗證系統,以便當用戶請求特定於他們的數據時,例如他們自己的列表,或者他們嘗試添加數據時,他們需要登錄。

我知道我將需要使用SSL保護注冊和身份驗證的安全,但是我想避免重新發明。 我正在尋找解決方案嗎? 任何建議將不勝感激! 謝謝!

如果您要構建真正的REST Web服務,則無法進行會話-即讓用戶登錄一次,然后服務器記住該會話,並且用戶在以后的每次調用中都使用該會話。 對於REST服務,服務器將不會記住“狀態”。

每個狀態都可以通過其包含的表示形式以及它提供的一組轉換來完全理解,而這些轉換則限於可理解的統一動作集。

(來源: http : //tech.groups.yahoo.com/group/rest-discuss/message/5841

實際上,這使您的工作更加輕松,因為每次對服務器的調用都必須帶有唯一的標識符以驗證用戶身份。 您的選擇包括發送用戶名/密碼組合,密鑰和其他參考以識別用戶,或者兩者都發送。 因此,當用戶“登錄”時,您可以在客戶端(例如,以Web表格中的javascript或您的應用程序中的javascript記住您的詳細信息,並在iPhone / Android的本地存儲中記住該信息),然后在每次調用時發送這些詳細信息。 您可以使用rest調用來驗證登錄詳細信息,但不會返回會話。

所以用pseduo代碼來回答:

  1. HTML:用戶登錄。 表單被JavaScript捕獲,而用戶名/密碼(或其他密鑰)則被javascript記住,或者
  2. iOS / Android:用戶登錄。表單被代碼捕獲並被記住在本地存儲中
  3. [可選]將用戶名/密碼/秘密密鑰發送到您的“ WhoAmI” Web服務:如果有效,則會收到響應。 如果無效,則發送錯誤。 這可以立即提供反饋
  4. 對於其他所有呼叫,您還會將用戶名/密碼/秘密密鑰發送到您的Web服務:如果有效,則處理呼叫,如果無效,則拋出錯誤。
  5. (出現錯誤時,您要求用戶提供新的憑據)。

PHP方面很簡單:每個調用都將顯示為:

  1. 如果沒有用戶名/密碼/秘密密鑰:拒絕通話
  2. 在數據庫中查找用戶名/密碼/秘密密鑰。 如果無效:拒絕通話
  3. 如果有效:處理其余的通話-您擁有用戶的詳細信息。

顯然,您還可以使用不需要身份驗證的服務。 這可能包括注冊。

將Oauth使用者密鑰和秘密捆綁到客戶端應用程序。 使用Oauth 1授權標頭對HTTPS請求進行簽名。 如今,使用oauth庫進行簽名很容易。

對於Web應用程序,沒有辦法。

暫無
暫無

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

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