我正在为移动应用程序开发服务器端,如下所示: - 我正在使用 Spring MVC 框架,并且我已经按照下面的代码为 restful 请求(使用 JSON)实现了 BASIC AUTHENTICATION。
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<security:http create-session="stateless" entry-point- ref="restAuthenticationEntryPoint" use-expressions="true">
<security:intercept-url pattern="/restful" access="hasRole('ROLE_USER')"/>
<security:intercept-url pattern="/restful/*" access="hasRole('ROLE_USER')"/>
<security:intercept-url pattern="/login" access="permitAll"/>
<security:custom-filter ref="myFilter" after="BASIC_AUTH_FILTER"/>
<!-- <security:logout /> -->
</security:http>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider
user-service-ref="daoUserService">
<security:password-encoder ref="passwordEncoder" />
</security:authentication-provider>
</security:authentication-manager>
<bean id="restAuthenticationEntryPoint" class="com.bp_gae.utils.RestAuthenticationEntryPoint">
</bean>
<bean id="myFilter"
class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager" />
<property name="authenticationEntryPoint" ref="restAuthenticationEntryPoint" />
</bean>
<bean
id="passwordEncoder"
class="com.bp_gae.utils.AppPasswordEncoder" />
<bean
id="daoUserService"
class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">
<property
name="dataSource"
ref="dataSource" />
<property
name="enableGroups"
value="false" />
<property
name="enableAuthorities"
value="true" />
<property name="usersByUsernameQuery">
<value>
select username,password, 1
from users
where username = ?
</value>
</property>
<property name="authoritiesByUsernameQuery">
<value>
select username,authority
from users c,
user_roles cp
where c.user_id = cp.user_id
and c.username = ?
</value>
</property>
</bean>
</beans>
因此,移动客户端在每个请求中发送用户名、密码,并检查数据库以确定他是否可以访问受保护的资源。没有创建会话。新要求是集成 Facebook 身份验证。1) 移动用户在客户端登录并进行身份验证,并将身份验证令牌发送到服务器。2)服务器应该使用我创建的 FB 应用程序中的 facebook app-id 和 app-secret 使用该令牌(检查此令牌是否对 facebook 有效)获取用户 facebook 详细信息。为此,我正在使用 Spring Social。3) 在基本或 Facebook 成功认证后,所有受保护的资源都可以访问。4)我已经在数据库中有一个用户表(用户名、电子邮件、密码),我正在考虑用 SocialUsers 创建另一个表(电子邮件、
我不确定如何在我的 security.xml 文件中使用这两种身份验证方法。- 我必须为社交验证设置另一个过滤器吗?- 在那种情况下,我怎样才能使用这两个过滤器?欢迎任何建议/示例代码!