2013-01-22 36 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