В моем проекте я пытаюсь выполнить аутентификацию пользователя с помощью instagram. Этот проект работает на spring-boot с spring-security-oauth2. На этапе аутентификации я получаю из instagram code
, который отправляется на instagram для извлечения access_token
. Вместо access_token
Я получаю сообщение с плохим ответом с сообщением: «Вы должны предоставить client_id».Spring boot with oAuth2 OauthException: «Вы должны предоставить client_id»
WebSecurityConfig.class
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**")
.authorizeRequests()
.antMatchers("/", "/index**", "/login/**", "/webjars/**", "/js/**", "/css/**", "/images/**")
.permitAll()
.anyRequest()
.authenticated()
.and().exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/"))
.and().logout().logoutSuccessUrl("/").permitAll()
.and().addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)
.addFilterBefore(ssoFilter(instagram(), "/login"), BasicAuthenticationFilter.class);
}
@Bean
@ConfigurationProperties("instagram")
ClientResources instagram() {
return new ClientResources();
}
private Filter ssoFilter(ClientResources client, String path) {
OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(path) {
};
OAuth2RestTemplate filterTemplate = new OAuth2RestTemplate(client.getClient(), oauth2ClientContext);
filter.setRestTemplate(filterTemplate);
filter.setTokenServices(new UserInfoTokenServices(client.getResource().getUserInfoUri(),
client.getClient().getClientId()));
return filter;
}
application.properties
instagram.client.clientId=df5cc67d71e04b1b9a89ca9e1572a801
instagram.client.clientSecret=8da04f4072a54579ae4e334d5e865fa4
instagram.client.accessTokenUri=https://api.instagram.com/oauth/access_token
instagram.client.userAuthorizationUri=https://api.instagram.com/oauth/authorize
instagram.client.scope=basic, likes, comments, relationships
instagram.resource.userInfoUri=https://api.instagram.com/v1/users/self
Here является то, что проект на GitHub. Проект для образовательных целей, так что здесь открыты клиентский клиент и клиентский ключ. Спасибо за любой совет, как заранее решить это досадное исключение
Я не вижу здесь никакой полезной информации. Явный поток кода использовался, и он не работал. – Solorad
Я не вижу вызова для access_token с client_id, client_secret и кода доступа –
, потому что spring-oauth делает все, что для меня. Проблема заключается в последнем шаге аутентификации. Я вижу, вы не понимаете мой вопрос, и ваш ответ - это просто копировать-вставить из какой-либо документации. – Solorad