Я пытаюсь внедрить клиента OAuth2, используя поток полномочий авторизационного кода с помощью Spring-Boot. Но это не сработает.Конфигурация клиента OAuth2 с пружинной загрузкой
«http://external_server/oauth/authorize» был вызван, но не было добавлено GET
аргументов.
Кто-нибудь знает, что не так в конфигурации ниже?
Поставщик Auth реализуется doorkeeper
, и он уже работает. , так что константы URL в WebSecurityConfiguration
верны.
@Configuration
@EnableWebMvcSecurity
@EnableOAuth2Client
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
private static final String AUTH_ENDPOINT = "http://external_server";
private static final String LOGIN_URL = AUTH_ENDPOINT + "https://stackoverflow.com/users/sign_in";
private static final String LOGOUT_URL = AUTH_ENDPOINT + "/sign_out";
private static final String AUTH_URL = AUTH_ENDPOINT + "/oauth/authorize";
private static final String ACCESS_TOKEN_URL = AUTH_ENDPOINT + "/oauth/token";
@Autowired OAuth2ClientContext oAuth2ClientContext;
/**
* for specific api
*/
@Bean public RestTemplate restTemplate() {
return new RestTemplate();
}
/**
* for accessing protected resource
*/
@Bean public OAuth2RestTemplate oAuth2RestTemplate() {
return new OAuth2RestTemplate(resource(), oAuth2ClientContext);
}
@Bean protected OAuth2ProtectedResourceDetails resource() {
AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails();
resource.setClientId("_xxx_");
resource.setClientSecret("_yyy_");
resource.setUserAuthorizationUri(AUTH_URL);
resource.setAccessTokenUri(ACCESS_TOKEN_URL);
return resource;
}
@Override public void configure(WebSecurity web) throws Exception {
web.debug(true).ignoring().antMatchers("/webjars/**", "/css/**");
}
@Override protected void configure(HttpSecurity http) throws Exception {
//@formatter:off
http.csrf().disable().authorizeRequests()
.antMatchers("/", "/callback")
.permitAll()
.anyRequest()
.authenticated();
http.formLogin()
.loginPage(AUTH_URL)
.loginProcessingUrl(LOGIN_URL);
http.httpBasic()
.disable();
//@formatter:on
}
}
OAuth2ProtectedResourceDetails устанавливается в OAuth2RestTemplate так, что он будет знать, какой поток гранта вы хотите использовать. Как бы то ни было, вы не пользуетесь им. –
@ bajada93 благодарит за ваш комментарий! Я установил класс конфигурации, чтобы ввести OAuth2RestTemplate, но все же не работает. –
Вам необходимо добавить [OAuth2ClientAuthenticationProcessingFilter] (https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/ oauth2/client/filter/OAuth2ClientAuthenticationProcessingFilter.java) в цепочку фильтров Spring Security и вставить в него OAuth2RestTemplate. Это должно делать свое дело. –