Spring Oauth и безопасность перенаправляют на / логин при успешном входе - PullRequest
0 голосов
/ 16 апреля 2020

При использовании Spring security и oauth

У меня проблема при успешном входе в систему, он перенаправляет на "/ login", но я никогда не устанавливал его, Как он может перенаправить на страницу перед входом в систему?

Следуйте подробности:

Центр авторизации:

spring:
  application:
    name: auth-server
server:
  port: 6001
  servlet:
    context-path: /uaa

URL страницы входа: / login

Следуйте настройке

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.antMatcher("/**")
                .authorizeRequests()
                .antMatchers("/login", "/oauth/authorize**")
                .permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .failureUrl("/login?error=true")
                .permitAll()
                .and()
                .logout()
                .invalidateHttpSession(true)
                .clearAuthentication(true)
                .logoutUrl("/logout")
                .and()
                .exceptionHandling()
                .accessDeniedPage("/403"); 

        http.cors().and().csrf().disable();
        http.sessionManagement().invalidSessionUrl("/login");
        http.sessionManagement().maximumSessions(1).maxSessionsPreventsLogin(true);
    }



клиент:

server:
  port: 4000

security:
  oauth2:
    client:
      clientId: community
      clientSecret: 123456
      accessTokenUri: http://localhost:6001/uaa/oauth/token
      userAuthorizationUri: http://localhost:6001/uaa/oauth/authorize
    resource:
      userInfoUri: http://localhost:6001/uaa/oauth/user/me

следовать за настройкой безопасности

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest()
                .authenticated()
                .and()
                .logout()
                .invalidateHttpSession(true)
                .clearAuthentication(true)
                .logoutSuccessUrl("http://localhost:6001/uaa/auth/logout")
                .and()
                .exceptionHandling()
                .accessDeniedHandler(deniedHandler);

        http.csrf().disable();

        http.httpBasic().disable();
    }

при успешном входе он будет перенаправлен на

http://localhost:6001/uaa/oauth/authorize?client_id=community&redirect_uri=http://127.0.0.1:4000/login&response_type=code&state=jy2gLx

, но 4000 - это клиентский порт.

1 Ответ

0 голосов
/ 17 апреля 2020

Я нахожу ответ. В application.yml в клиенте есть какая-то ошибка

resource:
      userInfoUri: http://localhost:6001/uaa/oauth/user/me

неправильный URL-адрес

resource:
      userInfoUri: http://localhost:6001/uaa/user/me

Я исправляю его, и он работает

...