2013-01-22 73 views
0

我正在研究一個小型的Web應用程序。它使一個會計流程自動化。SOA和RESTful體系結構中的授權(未驗證)

我起草了一個業務需求和一個SOA結構,但由於我的侷限性,我不能再走了,特別是授權部分。

讓我困惑的一件事是我應該使用RESTful API來進行授權(而不是驗證)嗎? 還是我應該在後臺執行授權(用戶 - >角色 - >允許的操作),而不公開此授權服務?

SOA + RESTful API處理授權的最佳做法是什麼?

真誠, 薩科

+0

Coudl您解釋越多,你的_should指的是我用的RESTful API做authorization_ – darkheir

+0

例如:撥打/授權/ {...}之前每次在用戶使用sessionID進行身份驗證後,調用其他服務API來查看我是否有權訪問資源。這是授權如何完成的? –

+0

你需要什麼級別的授權?你需要阻止API嗎?過濾數據(「行級安全性」)?別的東西? –

回答

1

如果我沒有誤解你的問題,我認爲正確的做法是,每個服務請求的服務器可能會返回一個訪問錯誤(或沒有權限才能訪問資源的錯誤)或請求的結果。

在JSON服務器返回這樣的事情

{ 
"status": "ko", 
"error": { 
    "number": "xx", 
    "msg" ; "error you dont have right to access" 
} 

}

如果確定

​​

}

1

與REST API的事情是,你可以」例如,使用session登錄用戶。每次用戶嘗試訪問受保護的資源時,他都需要發送一個令牌來標識他以及請求(我們使用令牌在請求中不發送密碼)。

因此,如果即使用戶調用方法/authorize/{...},當另一個方法被調用sinced沒有登錄狀態時,您將需要再次檢查其憑據。

所以對我來說,proceeed最好的辦法是:

  1. 用戶發送請求,其用戶名和其作爲PARAM
  2. 在服務器端令牌您檢查令牌是有效的(匹配用戶名並且沒有過期)
  3. 如果令牌有效,那麼用戶就是他說他是誰,所以你可以檢查它的權利(如果他有權訪問資源)
  4. 如果他有權訪問,那麼你繼續要求
  5. 否則您迴應的HTTP錯誤像401(未授權)
+0

我同意你的說法darkheir!非常感謝你的幫助! –

+0

很高興幫助!如果它解決了你的問題,那麼你應該打勾答案來標記你的問題解決! – darkheir