首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Security在web应用程序和RESTful服务之间共享安全上下文

使用Security在web应用程序和RESTful服务之间共享安全上下文
EN

Stack Overflow用户
提问于 2013-04-23 02:07:50
回答 1查看 7.1K关注 0票数 4

我们正在为一个带有UI web模块(Spring )的绿色领域项目设计安全性--客户机,以及RESTful服务web模块(CXF) --服务器,作为单独的war文件部署在同一个Websphere应用服务器中。系统应该使用Security进行安全保护,针对LDAP进行身份验证,并根据数据库进行授权。我们一直在寻找在这两个应用程序之间共享安全上下文的最佳解决方案,这样用户就可以在web中进行身份验证,并调用其对安全RESTful服务的AJAX调用。找到的备选方案:

  • OAuth:似乎过于满足我们的需求,引入了相当复杂的身份验证过程,据报道还存在一些企业集成问题。
  • CAS:这相当于建立一个企业SSO解决方案,超出了我们的参与范围。
  • 基于容器的(Websphere)安全性,尽管security并不推荐,但我们不清楚这是否能为我们的特定需求提供一个解决方案

我们在寻找一个更简单的解决方案。我们如何在这两个应用程序之间传播安全上下文?我们应该在UI web应用程序中实现身份验证,然后在DB中持久化会话,以便RESTful服务查找吗?CXF能提供一个解决方案吗?我们读过许多关于生成可以传递的“安全令牌”的线程,但是如何才能准确地使用Security来实现这一点,它是否足够安全呢?

期待任何想法或建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 05:51:39

您希望能够代表在UI web模块中验证的用户在服务器上执行REST服务。您描述的称为SingleSignOn的需求。最简单的方法是在REST WS调用期间传递带有用户名的HTTP头。(我希望您的REST客户端允许这样做)。若要以安全的方式执行此操作,请使用以下方法之一:

  1. 加密REST客户端中的用户名,并在REST服务器中解密它
  2. 确保标头是从本地主机发送的(因为应用程序部署在同一个容器上)

因此,使用SpringSecurity身份验证来保护两个应用程序都是针对LDAP的。在第一个应用程序(Rest客户端)中,在第二个应用程序(Rest )中使用常规表单身份验证,添加您自己的PreAuthenticatedProcessingFilterhttp://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#d0e6167

编辑过的

“认证”是验证主体身份的过程。在我们的示例中,REST客户端(Spring应用程序)和REST服务器(CXF应用程序)都根据LDAP验证身份。LDAP“说”好或不可以。LDAP是一个用户存储库。它是无状态的,不记得以前的状态。它应该保存在申请中。

根据我的理解,用户不会直接访问REST服务器--用户总是访问REST客户端。因此,当用户访问REST客户端时,他/她提供了用户名和密码,并且REST客户端根据LDAP进行身份验证。因此,如果REST客户端访问REST服务器,则对用户进行身份验证,并且REST客户端知道他的名称。

因此,如果请求使用用户名REST服务器来REST服务器,肯定知道用户已经过身份验证,并且不应该再次根据LDAP对其进行身份验证。(如上文所述,报头应以安全的方式传递)。Rest Server应该使用用户名、访问LDAP和收集相关的用户信息,而无需提供用户密码(因为用户已经通过身份验证)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16159710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档