目标:我的服务器需要将非用户定向到登陆/主页,并将用户登录到实际的应用程序.加载应用程序后,它将向RESTful API(通过Ajax)发出经过身份验证的 HTTP请求.
我有一个需要身份验证的RESTful API.在另一台服务器上,我有我的网站,也需要身份验证,因此我可以确定是为非用户显示登陆/主页还是为登录用户显示应用程序.
最初我认为为RESTful API实现HTTP Basic Auth就足够了.但是,为了让我的网站运行身份验证,我还需要在那里设置身份验证,这意味着复制低级代码以检查REST API和网站服务器中数据库中的凭据.
或者,我想知道该网站是否可以通过RESTful API进行身份验证.例如,在我的请求处理程序中POST /login
,我可以GET
向我的API发出请求,从请求正文传递用户凭据.如果请求返回200 OK
,我可以签署用户的会话,从而验证它们.从那时起,对REST API的Ajax请求需要使用相同的凭据进行身份验证,因此我可以:
设置一个包含凭据的cookie,从而允许JavaScript在执行请求之前检索凭据(使用SSL确定?)
将凭据转储到Web应用程序的服务HTML中,从而允许JavaScript在执行请求之前检索凭据(使用SSL确定?)
通过Web应用服务器代理API,在那里我可以从会话中检索凭据并将它们添加到Authorization
代理请求的标头中?
或者,我想我可以在两台服务器之间共享会话,虽然我听说这是RESTful设计的不良做法.
这样做会有什么问题?有没有更好的方法来实现我的目标?