2012-10-12 56 views
2

我通过开发一个单独的REST API服务器和一个Web应用程序服务器来创建一个'API as a service',它只是提供一个使用REST API的网站。网络应用充当API的客户端。该Web应用程序是一个简单的仪表板,允许用户登录并查看其API使用情况并查看其API密钥和密钥,以便他们可以安全地访问该API。REST API如何知道用户是否已登录?

我打算使用类似AWS的共享密钥来使API的客户端能够访问受保护的资源。

但是,有一点我很困惑的是,用户登录到仪表板网站时,是否应该由REST API或Web应用程序服务器来处理。

如果要由REST API端点处理,那么API服务器如何在请求之间维护会话状态。 API如何知道用户是否登录?在API服务器上存储会话状态是否可行,即使它应该是无状态的。像twitter这样的其他类似休息的API如何做到这一点?

回答

2

ReSTful安全处理服务器端;基本上是:

  • 当客户端请求的资源没有被验证
  • 每一位客户的呼叫都通过WWW身份验证头
  • 这个头可以储存客户端提供身份验证服务器返回401个状态码 - 成功登录后在cookie中登入

您会在该书中找到有关该问题的极大帮助:ReSTful WebServices Cookbook。寻找关于基本/摘要认证的解释。

这里是a good introduction与一个活的工作样本。

+0

感谢您的回答,但问题更多的是关于API应该如何处理会话中的用户登录,或者是否应该不是API的一部分,只是在我的仪表板网站上实现 – cjroebuck

+0

API不需要session:when一个客户端要求一个安全的资源,他们称之为授权或拒绝访问的身份验证管理器(一种是/否实现的机制)。 –

+0

很酷。是的,这也是我一直在读的,谢谢。所以基本上,登录/注销是由应用程序服务器处理的,而不是API服务器? – cjroebuck