春季安全 - 登录架构

问题描述:

我一直跟随本教程中的例子:https://spring.io/blog/2015/01/28/the-api-gateway-pattern-angular-js-and-spring-security-part-iv春季安全 - 登录架构

简单:

  1. 我有一个名为UI服务器,有一些HTML和JS角。

  2. 我有一个叫资源服务器有谁是服务从数据库内容的RestController。所有的电话都必须经过认证。

UI服务器有一个登录页面与春天HTTP基本登录工程和创建存储在Redis的服务器中的春季会议,并共享给资源服务器。当我有一些虚拟用户在内存身份验证一切正常。

现在的问题是: 我希望我的UI服务器能够使用DB中存在的真实用户进行登录。 UI服务器不应该有任何DB相关的代码(不知道它的存在),但它应该调用的资源服务器REST服务。我想唯一的办法(但听起来我错了)是落实在UI设置了一个UserDetailsS​​ervice和loadUserByUsername方法应该调用从资源服务器(例如/的getUser)休息服务。其余服务应返回给定用户名的所有用户详细信息,包括凭证和角色。但是,据我了解,这种服务不能保证(呼叫成功),这会危及到整个安全。

我向所有人开放的意见和建议。我记得这是我第一次与Spring合作。

谢谢你在前进,

萨科

+0

你** **问题实际上你的答案是,在很多应用中实现的,旁边休息 - 这ID应无任何可能被隐藏跟踪,你有接入点。 – Appeiron

+0

** @ Appeiron **感谢您的回复。我不确定我是否明白你想说什么。纠正我,如果我错了,但你建议我提供一个不安全的服务,通过用户名返回用户的“方式”是只要我隐藏这项服务的路要走?如果我只通过本地调用来隐藏整个资源服务器,那就没有问题了,但我不希望这样,因为移动应用程序也可能是一个可能的客户端。 – nicolas

+0

这只是我作为前端开发者的意见,在应用程序开始时只运行一次'/ getUser'方法而不会混淆cookie,id,存储等。 – Appeiron

如果有人有兴趣我如何解决这个..

我决定做的事情审慎研究和春季安全.. :)

我的回答是使用自定义的AuthenicationProviderUI服务器,它会调用在未受保护的其他登录服务资源服务器,这反过来验证对数据库用户。

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

如果响应是不是成功(例如返回对象为null或抛出异常)那么我将返回null或抛出一个AuthenticationException,这取决于Spring的行为方式......我还没有达到但研究的一部分..

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