Spring安全 - 登录架构

时间:2015-11-04 22:15:40

标签: java rest spring-security

我一直在关注本教程中的示例:https://spring.io/blog/2015/01/28/the-api-gateway-pattern-angular-js-and-spring-security-part-iv

简而言之:

  1. 我有一个名为UI的服务器,它有一些html和angular js。

  2. 我有一个名为resource的服务器,它有一个RestController,它正在为数据库中的内容提供服务。所有电话都必须通过身份验证。

  3. UI服务器有一个登录页面,它与spring http basic登录一起使用,并创建一个存储在Redis服务器中的弹簧会话,并将其共享给资源服务器。当我在内存身份验证中有一些虚拟用户时,一切正常。

    问题是: 我希望我的UI服务器能够使用存在于DB中的真实用户执行登录。 UI服务器不应该有任何与DB相关的代码(不知道它的存在),但它应该在资源服务器中调用REST服务。我想的唯一方法(但对我来说听起来不对)是在UI中实现userDetailsS​​ervice bean,而loadUserByUsername方法应该从资源服务器调用rest服务(例如/ getUser)。其余服务应返回所有用户详细信息,包括给定用户名的凭据和角色。但是,根据我的理解,这项服务无法保证(因为呼叫成功)会损害整个安全性。

    我对所有建议和建议持开放态度。请记住,这是我第一次尝试使用Spring。

    提前谢谢你,

    尼古拉斯

2 个答案:

答案 0 :(得分:0)

如果有人对我如何解决这个问题感兴趣..

我决定做谨慎的事情并研究春天的安全.. :)

我的回答是在我的 UI 服务器中使用自定义身份验证提供程序,该服务器将在资源服务器中调用不受保护的其他登录服务,这反过来验证用户对数据库。

如果响应成功(例如,用户名,密码,角色可以返回用户对象),那么我将从中创建一个UsernamePasswordAuthenticationToken对象并将其返回。

如果响应是 NOT 成功(例如返回对象为null或抛出异常),那么我将返回null或抛出AuthenticationException,这取决于Spring的行为......我和#39; t达到了那个学习的部分..

http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#tech-intro-authentication

答案 1 :(得分:-1)

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。它是保护基于 Spring 的应用程序的事实上的标准。

Spring Security 是一个专注于为 Java 应用程序提供身份验证和授权的框架。与所有 Spring 项目一样,Spring Security 的真正强大之处在于它可以轻松扩展以满足自定义要求

特点 对身份验证和授权的全面且可扩展的支持

防止会话固定、点击劫持、跨站点请求伪造等攻击

Servlet API 集成

与 Spring Web MVC 的可选集成

相关问题