Несанкционированная ошибка при перенаправлении с OAuth в приложение - PullRequest
0 голосов
/ 18 июня 2020

У меня есть весеннее приложение, которое для входа в систему использует Google, Facebook и LinkedIn OAuth.

Когда пользователь входит в систему, пользователь направляется на страницу входа в Google / LinkedIn / Facebook, и они могут ввести свой пароль электронной почты и авторизоваться. После входа в систему, когда пользователь перенаправляется в приложение, отображается неавторизованная ошибка.

enter image description here

Ниже приведен блок кода


@Configuration
@EnableOAuth2Client
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Autowired
    OAuth2ClientContext oauth2ClientContext;

    public SecurityConfiguration() {
    }

    protected void configure(HttpSecurity http) throws Exception {
        ((HttpSecurity)((HttpSecurity)((HttpSecurity)((HttpSecurity)((AuthorizedUrl)((AuthorizedUrl)((HttpSecurity)http.headers().frameOptions().sameOrigin().httpStrictTransportSecurity().disable().and()).antMatcher("/**").authorizeRequests().antMatchers(new String[]{"/assets/**", "/landing", "/sociallogin"})).permitAll().anyRequest()).authenticated().and()).exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/landing")).and()).logout().logoutSuccessUrl("/landing").permitAll().and()).csrf().disable()).addFilterBefore(this.ssoFilter(), BasicAuthenticationFilter.class);
    }

    private Filter ssoFilter() {
        CompositeFilter filter = new CompositeFilter();
        List<Filter> filters = new ArrayList();
        OAuth2ClientAuthenticationProcessingFilter facebookFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/facebook");
        OAuth2RestTemplate facebookTemplate = new OAuth2RestTemplate(this.facebook(), this.oauth2ClientContext);
        facebookFilter.setRestTemplate(facebookTemplate);
        facebookFilter.setTokenServices(new UserInfoTokenServices(this.facebookResource().getUserInfoUri(), this.facebook().getClientId()));
        facebookFilter.setAuthenticationSuccessHandler(this.successHandler());
        filters.add(facebookFilter);
        OAuth2ClientAuthenticationProcessingFilter googleFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/google");
        OAuth2RestTemplate googleTemplate = new OAuth2RestTemplate(this.google(), this.oauth2ClientContext);
        googleFilter.setRestTemplate(googleTemplate);
        googleFilter.setTokenServices(new UserInfoTokenServices(this.googleResource().getUserInfoUri(), this.google().getClientId()));
        googleFilter.setAuthenticationSuccessHandler(this.successHandler());
        filters.add(googleFilter);
        OAuth2ClientAuthenticationProcessingFilter githubFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/linkedin");
        OAuth2RestTemplate githubTemplate = new OAuth2RestTemplate(this.github(), this.oauth2ClientContext);
        githubFilter.setRestTemplate(githubTemplate);
        githubFilter.setTokenServices(new UserInfoTokenServices(this.githubResource().getUserInfoUri(), this.github().getClientId()));
        githubFilter.setAuthenticationSuccessHandler(this.successHandler());
        filters.add(githubFilter);
        filter.setFilters(filters);
        return filter;

}

ТАКЖЕ Я ХОЧУ ВЫДЕЛАТЬ -

URL запроса -

https://example.com/ticket/login/google?state=V2mdsJ&code=4%2F0wGA6aCswqnSD68xj34acDSDhz_DVFE5UiUOr-QQOZl9w6CpZ2aLoFCfBFL_5k_Pzx89I&scope=email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+openid&authuser=0&prompt=consent

Это место, где происходит ошибка 401.

  • Существует apache 2 сервер, который проксирует запрос на сервер приложений (я не уверен, может ли это быть причиной этой проблемы, но просто хочу упомянуть)

* Испытывал ли кто-нибудь подобный сценарий или есть способ устранить причину ошибки. Дайте мне знать, если я могу предоставить дополнительную информацию. *

1 Ответ

0 голосов
/ 20 июня 2020

Обнаружил проблему, с моего сервера не удалось получить доступ к www.googleapis.com для получения информации

Пришлось добавить IP 8.8.8.8 в /etc/resolve.conf файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...