【发布时间】:2014-04-06 09:30:35
【问题描述】:
我有一个 oauth2 的工作示例,并为客户端和资源所有者提供内存身份验证和授权。我正在尝试将其转换为 JDBC 身份验证和授权,但没有取得多大成功。我不断收到 Bad Credentials 错误。过滤器的安全性让我很难调试:-)
插入的是我的 java 代码,它现在使用内存身份验证用户,但不用于客户端。架构与this 相同。
是否有使用 jdbc 身份验证和授权的 oauth2.0 的完整工作示例以及某处的 Java 配置?
-------------------下面的代码--
public class WebSecurityConfig extends OAuth2ServerConfigurerAdapter {
private final static Logger logger = LogFactory.getLogger(WebSecurityConfig.class);
private JdbcClientDetailsService jdbcClientDetailsService;
private JdbcTokenStore jdbcTokenStore;
private JdbcUserDetailsManagerConfigurer jdbcUserDetailsManagerConfigurer;
// @formatter:off
@Override
protected void configure(HttpSecurity http) throws Exception {
OAuth2ServerConfigurer oAuth2ServerConfigurer = new OAuth2ServerConfigurer( ).tokenStore(jdbcTokenStore);
http
.requestMatchers()
.and()
.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and()
.apply(oAuth2ServerConfigurer);
http.setSharedObject(ClientDetailsService.class, jdbcClientDetailsService);
}
// @formatter:on
// // @formatter:off
// @Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// int validityInSec = Integer.parseInt(validtityInSeconds);
auth
.userDetailsService(new InMemoryUserDetailsManager(getUserDetails()));
}
// @formatter:on
//
private final Collection<UserDetails> getUserDetails() {
List<UserDetails> userDetails = new ArrayList<UserDetails>();
userDetails.add(new User("auction", "password", AuthorityUtils.createAuthorityList(
"USER", "read", "write")));
return userDetails;
}
@Autowired
@Qualifier("oauth_details_ds")
public void setDataSource(DataSource dataSource){
jdbcClientDetailsService = new JdbcClientDetailsService(dataSource);
jdbcTokenStore = new JdbcTokenStore(dataSource);
// try {
// jdbcUserDetailsManagerConfigurer = new JdbcUserDetailsManagerConfigurer().dataSource(dataSource);
// } catch (Exception e) {
// logger.error("Bad code design: ",e);
// e.printStackTrace();
// }
}
}
【问题讨论】:
-
为什么不在security.xml 中配置JDBC?该文档显示了如何做到这一点...
标签: java spring-security oauth-2.0