Yii SOA和RESTful体系结构中的授权(而非身份验证)

Yii SOA和RESTful体系结构中的授权(而非身份验证),yii,soa,restful-architecture,Yii,Soa,Restful Architecture,我正在开发一个小型web应用程序。它自动化了一个会计过程 我起草了一个业务需求和SOA结构,但由于我的限制,我不能再进一步了,尤其是授权部分 让我困惑的一件事是,我应该使用RESTfulAPI进行授权(而不是身份验证)吗? 或者我应该在后端执行授权(用户->角色->允许的操作),而不公开此授权服务 SOA+RESTful API处理授权的最佳实践是什么 真诚地, Nicolas如果我没有误解您的问题,我认为正确的做法是服务器可能会返回访问错误(或无权访问资源的错误)或请求的结果 在JSON中,服

我正在开发一个小型web应用程序。它自动化了一个会计过程

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

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

SOA+RESTful API处理授权的最佳实践是什么

真诚地,
Nicolas

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

在JSON中,服务器返回如下内容

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

如果可以的话

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

}RESTAPI的问题是,例如,您不能使用
会话登录用户。每次用户尝试访问受保护的ressource时,他都需要在请求中发送标识他的令牌(我们使用令牌不在请求中发送密码)

因此,即使用户调用方法
/authorize/{…}
,您也需要在调用其他方法时再次检查其凭据,因为没有登录状态

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

  • 用户以其用户名和令牌作为参数发送请求
  • 在服务器端,检查令牌是否有效(与用户名匹配且未过期)
  • 如果令牌有效,那么用户就是他所说的用户,这样您就可以检查其权限(如果他有权访问ressource)
  • 如果他有权限,那么你继续请求
  • 否则您将响应
    HTTP
    错误,如
    401
    (未经授权)

  • 您能详细解释一下我应该使用RESTful API进行授权是什么意思吗?例如:每次在调用其他服务API之前调用/authorize/{…},以查看在用户通过sessionID进行身份验证之后,我是否有权访问资源。这就是授权的方式吗?您需要什么级别的授权?您需要阻止API吗?过滤数据(“行级安全”)?还有别的事吗?我同意你的看法,达克希尔!非常感谢你的帮助!很高兴它有帮助!如果它解决了你的问题,那么你应该勾选答案来标记你的问题已解决!