基于 REST 的 Web 应用架构的身份验证
Posted
技术标签:
【中文标题】基于 REST 的 Web 应用架构的身份验证【英文标题】:Authentication for a REST based web app architecture 【发布时间】:2013-06-17 06:12:45 【问题描述】:我需要帮助来设计我的网络应用程序。我想做一个需要身份验证的 REST Web 服务,以及一个访问此 Web 服务以获取数据的 Web 应用程序。所有用户都存储在外部数据库中(如 openldap、活动目录或其他)。
_____________ __________________
| | | |
| web app |----->| REST service |
|_____________| |__________________|
_______________
| |
| user db |
|_______________|
问题是:我需要在web app和web service上进行认证,还是web app可以通过web service验证登录?
希望我的问题可以理解
编辑:澄清情况:我的网络服务是独立的,任何类型的应用程序都可以访问它(如网络应用程序、智能手机应用程序、curl 等)。 我认为我的问题也需要澄清。我想知道是否可以在服务中创建所有身份验证逻辑。我想像这样的事情:
-
应用使用 HTTP 基本身份验证查询资源
http://mywebservice.com/login
如果凭据有效,则响应将类似于"loginStatus":true
,如果无效,则响应为false
。
这是一个可能的解决方案吗?安全吗?
【问题讨论】:
REST 服务是否计划为任何可以访问 REST 服务主机的用户都可以访问的独立服务,或者它是某种 Web 应用程序的中间件/后端? 是的,服务计划是独立的 我想了解的是:是否只能通过 WEB 接口(Web 应用程序)访问其余服务返回的数据,还是任何授权都可以查询通过 rest 服务 api 获取原始数据(例如使用 curl:curl -H "Accept:application/json" http://mywebapp.example.net/rest/myresource?start=1&end=99999999
)。
是的,任何类型的应用程序都可以访问它,而不仅仅是网络应用程序
首先你应该看看***.com/questions/4608225/…。第二件事是您必须考虑如何保存/验证身份验证令牌以及在访问您的网络服务时如何传递它。
【参考方案1】:
第一件事......“我需要在Web应用程序和Web服务上进行身份验证,还是Web应用程序可以通过Web服务验证登录?” ......两者都是可能的......取决于您的选择和实施。但是为了在所有情况下使流程统一以使用 DB,来自 Web 应用程序的调用应该转到 Web 服务,如图所示。我认为在登录时,客户端应该调用 Web 应用服务器,并且 Web 应用调用 Web 服务来查看数据库以检查凭据。
有很多方法。有时网络应用会大量使用 AJAX,他们会从客户端本身直接调用 REST 服务来获取数据或检查凭据。
【讨论】:
感谢您的回答。我想我会按照你的建议通过网络服务来做所有事情。感谢@andih 的帮助,我在 cmets以上是关于基于 REST 的 Web 应用架构的身份验证的主要内容,如果未能解决你的问题,请参考以下文章