2014-11-06 108 views
0

我正在使用Angularjs和Node.js(hapijs特定)创建应用程序。REST风格的体系结构身份验证/授权策略

我试图为这样的RESTful类型的体系结构确定一个很好的身份验证和授权策略。

我花了很多时间阅读关于这个网络,我想出了一个关于我为我的应用程序做什么的图表。我想知道这个模型中是否有明显的漏洞,或者我可以做些什么来使它更安全。

这是假定所有流量均通过SSL运行。我目前也不能使用SAML或OAuth或类似的东西,因为这是用于内部应用程序。

RESTful Architecture Model

回答

2

在第二个图,用于未经身份验证403的授权错误和401 - 这种方式,客户可以知道拿在处理错误,代码路径。

不清楚第一个图表显示的是什么 - 如果这是浏览器请求HTML页面,则需要返回重定向而不是401 ...浏览器不知道如何处理401。一些/ login API的调用,没关系。

+0

对不起第一个图显示登录过程 – Catfish 2014-11-06 16:52:46

+0

仍不清楚你的意思,但我的答案涵盖了两种可能性:) – 2014-11-07 01:10:18

+0

是的,你的答案确实涵盖了两种可能性。当用户登录登录页面并输入他们的用户名和密码并点击提交时,我的第一个图表应该代表从那一点发生的事情。 – Catfish 2014-11-07 01:12:11

0

你在这里用什么服务?这全都直接在MongoDB中吗?如果没有,你的应用程序层几乎肯定会有更好的会话管理,比你能写的更好。我强烈建议您在尝试编写自己的产品之前,先调查您的平台提供的开箱即用功能。

+0

你能详细说明吗?我不确定你的意思或你指的是什么。这是一个REST架构,所以它是STATELESS。每个请求都得到认证和授权。 Mongo存储随机令牌,并且来自客户端的每个请求都包含该令牌(一旦用户登录并生成令牌)。在我的情况下,令牌存储在sessionStorage中的客户端,但可以很容易地存储为cookie。 – Catfish 2014-11-06 19:38:27

+0

它不是无国籍的。你有一个身份验证令牌。那就是国家。您将该状态作为会话存储存储在mongodb中。让我问你一下。会议永远持续下去吗?你是否需要超时他们的会话(令牌)? – 2014-11-07 12:28:34

+0

我想我总是理解无状态的需要认证/授权每一个请求到服务器。就服务器而言,目前会话永远持续下去。最终他们可能会超时。当客户端关闭浏览器时,他们的sessionStorage消失了,因此客户端上不存在令牌,因此他们需要重新登录。 – Catfish 2014-11-07 13:58:24