Spring Oauth和安全性在登录成功后重定向到/ login

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Oauth和安全性在登录成功后重定向到/ login相关的知识,希望对你有一定的参考价值。

使用Spring Security和oauth时

我有问题,当我成功登录时,它重定向到“ / login”,但我从未设置,如何在登录之前将其重定向到页面?

以下为详细信息:

auth-center:

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

登录页面网址:/ 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是客户端端口。

答案

我找到了答案,客户端的application.yml中有些错误

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

网址错误

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

我更正并且可以正常工作

以上是关于Spring Oauth和安全性在登录成功后重定向到/ login的主要内容,如果未能解决你的问题,请参考以下文章

具有 Spring 安全性的 JSF - 登录后重定向到指定页面

使用Spring Social,Spring安全登录后重定向到原始URL?

登录后重定向(GAE 上的 Spring 安全性)

Grails 2 Spring Security Plugin - 成功登录后重定向到 /login/denied

如何在 Spring Security 中的 SSO 登录后重定向我的上一页?

Spring Security OAuth 2.0 Google:在未经授权的请求后重定向到默认 URL 而不是请求的 URL