Spring REST基本身份验证设计方法

时间:2016-01-30 16:38:46

标签: spring rest spring-mvc authentication

环境:

春季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安全性为客户端提供身份验证功能?他需要知道身份验证成功/失败 他登录后立即。

请帮忙,因为我在这方面苦苦挣扎。

0 个答案:

没有答案