Oauth2 Java-Config JDBC
Habe ich ein Beispiel von oauth2 und rest mit inmemory-Authentifizierung und-Autorisierung für den Kunden und Eigentümer der Ressource. Ich bin versucht zu konvertieren, dass der JDBC Authentifizierung und Autorisierung von sans viel Erfolg. Ich bekomme immer Schlechte Anmeldeinformationen Fehler. Die Filter Sicherheit geht, ist ziemlich verwirrend für mich zum Debuggen:-)
Eingefügt ist mein java-code, die für verwendet jetzt eine inmemory-Authentifizierung Benutzer, aber nicht für den client. Das schema ist das gleiche wie diese.
Gibt es ein komplettes Arbeitsbeispiel mit oauth2.0 unter Verwendung von jdbc Authentifizierung und Autorisierung mit Java-Konfiguration irgendwo???
-------------------Code unten--
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();
// }
}
}
- warum gehst du nicht konfigurieren von JDBC in Ihrem security.xml? die Dokumentation zeigt, wie es zu tun...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich mit dem gleichen schema von der url, die Sie in Ihre Frage. Ich bin mit postgres, so musste ich einige der Datentypen (varchar - - > character varying, LONGVARBINARY -> bytea). Zusätzlich zu, dass meine Datenquelle ist in einem separaten config-Klasse und die sieht so aus:
Ich bin mit dem Beispiel im Sparklr2 ( https://github.com/spring-projects/spring-security-oauth/tree/master/samples/oauth2/sparklr ), so dass ich die nächste Klasse:
Den rest der code ist fast der gleiche wie in Sparklr2