SOA和RESTful架构中的授权(不是身份验证)

时间:2013-01-22 02:13:47

标签: yii soa restful-architecture

我正在开发一个小型网络应用。它自动化一个会计流程。

我起草了业务需求和SOA结构,但由于我的限制,我不能再进一步,特别是授权部分。

有一件事让我困惑,我应该使用RESTful API来进行授权(而不是身份验证)吗? 或者我应该在后端进行授权(用户 - >角色 - >允许的操作),而不暴露此授权服务吗?

SOA + RESTful API处理授权的最佳做法是什么?

此致 尼古拉斯

2 个答案:

答案 0 :(得分:1)

如果我没有误解你的问题,我认为正确的是每个服务请求服务器可能会返回访问错误(或无权访问资源的错误)或请求的结果。

在JSON中,服务器返回类似这样的内容

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

}

如果可以的话

{
"status": "ok",
"result": {
    ...
 }

}

答案 1 :(得分:1)

使用REST API的是,您无法使用session登录用户。每次用户尝试访问受保护的资源时,他都需要发送一个令牌以及请求(我们使用令牌在请求中不发送密码)。

因此,即使用户调用方法/authorize/{...},当另一个方法被调用时,您还需要再次检查其凭据,因此没有登录状态。

所以对我来说,最好的方法是:

  1. 用户使用其用户名及其令牌发送请求为param
  2. 在服务器端,检查令牌是否有效(与用户名匹配且未过期)
  3. 如果令牌有效,那么用户就是他说的那样,这样你就可以检查它(如果他有权访问资源)
  4. 如果他有权访问,则继续执行请求
  5. 否则,您回复HTTP(未经授权)
  6. 之类的401错误