我有一个spring security Web应用程序,使用spring security 3.1命名空间进行以下应用程序上下文配置:
<security:http create-session="stateless" authentication-manager-ref="authenticationManager">
<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:custom-filter ref="restAuthenticationFilter" position="FIRST" />
<security:http-basic/>
</security:http>
<security:authentication-manager alias='authenticationManager'>
<security:authentication-provider user-service-ref='customUserDetailsService' />
</security:authentication-manager>
<bean id="restAuthenticationFilter" class="com...security.RestAuthenticationFilter"/>
<bean id="customUserDetailsService" class="com...security.RestUserDetailsService"/>
当我进入浏览器并输入URL http://localhost/rest/user/getByUsername?userName=foo&passWord=bar&deviceId=1234
时,我的自定义过滤器被调用,用户通过他的用户名,密码和deviceId进行身份验证,并允许他从中检索用户信息。 URL。但是,我需要测试这是否适用于同一网络上的android。因此,如果我执行ifconfig
并从ifconfig
获取本地IP地址,请将localhost替换为它,然后在浏览器中输入我的浏览器http://<local ip address>/rest/user/getByUsername?userName=foo&passWord=bar&deviceId=1234
中的URL,然后获取HTTP状态401 - 访问此资源需要完全身份验证,浏览器会弹出一个弹出窗口,使用用户名和密码登录。
我希望我的应用程序通过远程请求以与localhost相同的方式进行授权。
您的帮助将是如此,非常感谢。谢谢伙伴:)
答案 0 :(得分:0)
我在配置中看到了问题
<security:custom-filter ref="restAuthenticationFilter" position="FIRST" />
您应该在CONCURRENT_SESSION_FILTER之后放置过滤器以允许正确的Spring Security功能。
<security:custom-filter ref="restAuthenticationFilter" after="SECURITY_CONTEXT_FILTER"/>