环境:
春季4
Spring Security 4
Spring MVC 4
Hibernate 4
MySQL
问题:
以下是要求:
1)我们正在为库存管理开发Spring REST服务。
2).NET客户端将使用此Web服务。 (或将来可能是移动设备)
3)需要对REST服务的用户进行身份验证。用户将使用.NET客户端显示的登录表单,如果验证成功,他将是 允许使用REST API。
4)如果验证失败,则不允许用户进入REST服务。
现在我们决定使用基本身份验证。
我的问题是:我们如何使用Spring MVC REST和Spring安全性来实现这一目标?
以下是我的第一次尝试:
application-security.xml
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/usermanagement/authenticate" access="permitAll"/>
<intercept-url pattern="/abhishek/*" access="hasRole('ROLE_ADMIN')"/>
<http-basic/>
<csrf disabled="true"/>
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="Atul" password="12345" authorities="ROLE_ADMIN" />
</user-service>
</authentication-provider>
</authentication-manager>
以下是目前发生的流程:
1)/ authentication API在Db中查找用户并相应地返回Http Status代码201(成功)或401(失败)。 (这个网址是不安全的)
2)如果成功,客户端将用户名/密码作为授权标头(在登录时使用)并将此标头发送给将来的Http请求。
3)现在,一旦下一个请求到来(这是安全的),Spring安全性就会出现,并且再次进行身份验证。 但这次将是Spring提供的。
4)因此正在使用两种认证机制。
5)我知道我在搞乱,但无法决定设计这个的正确方法。
6)如何通过挂钩Spring安全性为客户端提供身份验证功能?他需要知道身份验证成功/失败 他登录后立即。
请帮忙,因为我在这方面苦苦挣扎。