如何设计REST后端/ Ajax前端应用程序的身份验证和授权系统

前端之家收集整理的这篇文章主要介绍了如何设计REST后端/ Ajax前端应用程序的身份验证和授权系统前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我开始一个新的项目,我们正在计划建立一个安静的后端和一个AJAX字体结束。我通过专注于识别我拥有的所有资源和各种HTTP动词将做他们,他们的URI和这些资源的JSON表示来解决问题。

我在寻找最好的设计来保护后端。这里是我考虑的设计清单。我正在寻找下面没有列出的替代设计,优点,缺点建议。系统将使用Spring 3.0和可能的Spring Security 3.0实现,SSL将用于系统的许多部分,但不是所有的部分,因此一些请求可能来自SSL,有些可能不会。@H_404_2@

选项1:使用HTTP会话@H_404_2@

显示标准登录屏幕,创建服务器端会话,让tomcat发回一个jsessionid cookie,并让ajax客户端在每个XHR请求中包含JSESSIONID cookie。这个选项只是觉得这是错误方法,基于以下原因。@H_404_2@

>连接变成了statefull,这是违反REST的规则
>我想能够将bakcend拆分成多个独立的WAR文件,这意味着我可以在后端有多个HTTP会话,如果是这样的话,这种方法不工作。虽然我不需要将后端拆分成多个应用程序的能力,我更喜欢一种允许这种可能性的设计。@H_404_2@

选项2:找到一个开源的基于Java的安全库@H_404_2@

除了Spring安全性我还没有找到任何其他Java库,任何建议高度赞赏。@H_404_2@

选项3:尝试使用现有协议(如OAuth)@H_404_2@

在我的简短的看看OAuth,它似​​乎是设计为跨站点的认证,每个网站都有自己的用户数据库。在这个系统中,我想要一个全局用户数据库跨所有后端ajax服务共享。@H_404_2@

选项4:使用SAML和Shiboleth@H_404_2@

这个选项似乎过度杀死,非常复杂的设置和维护。@H_404_2@

选项5:为每个请求发送用户名和密码@H_404_2@

这要求用户在每次请求时都发送用户名和密码,这意味着前端AJAX应用程序必须将用户名密码存储为JavaScript对象,如果用户离开页面,则返回用户名/密码组合将会消失并且可能会强制用户再次登录。我不想让前端尝试把用户名和密码放入cookie,因为这将包括安全。@H_404_2@

选项6:实现我自己的认证/授权协议@H_404_2@

创建一个REST服务,用户可以向其显示用户名/密码组合,然后返回和安全令牌,他们必须在每次请求时将其发送回服务。安全令牌将由服务进行数字签名,并且将具有到期时间。令牌将仅对大多数操作有好处,高安全性操作将需要新的登录屏幕作为确认操作的端口。@H_404_2@

这种方法的问题是,我必须发明另一个安全协议,似乎总是浪费时间。@H_404_2@

我相信我不是唯一的人反对这个问题,我希望堆栈溢出社区可以指向一些我还没有找到的选项和工具。@H_404_2@

看看 Apache Shiro.它是一个具有会话管理功能的身份验证系统,可用于跨应用程序共享会话。这可能是最简单的事情。

或者你可以使用Spring Security(或Shiro)与记住我cookie,它是在webapps共享的(只要它们在同一个HTTP域中)。记住我的cookie将类似于你的令牌在选项6中。你可以设置cookie的过期,所以它是短暂的像会话cookie或长期像常规记得我。@H_404_2@

猜你在找的Ajax相关文章