首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring boot安全性不会重定向configure(HttpSecurity http)方法上的oauth/authorize调用

在Spring Boot中,使用Spring Security进行OAuth2认证时,通常会配置HttpSecurity来处理安全性配置。如果你遇到/oauth/authorize调用没有被重定向的问题,可能是配置不正确或者某些配置被遗漏了。

以下是一个典型的Spring Boot应用程序中配置OAuth2的示例:

1. 添加依赖

首先,确保你在pom.xml中添加了必要的依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2. 配置应用程序属性

application.ymlapplication.properties中配置OAuth2客户端信息:

代码语言:javascript
复制
spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: YOUR_CLIENT_ID
            client-secret: YOUR_CLIENT_SECRET
            scope: profile, email
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          google:
            authorization-uri: https://accounts.google.com/o/oauth2/auth
            token-uri: https://oauth2.googleapis.com/token
            user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo

3. 配置安全性

在你的Spring Security配置类中,配置HttpSecurity

代码语言:javascript
复制
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter;
import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationProvider;
import org.springframework.security.oauth2.client.web.OAuth2LoginConfigurer;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority;
import org.springframework.security.oauth2.core.user.DefaultOAuth2User;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
            .oauth2Login()
                .loginPage("/login")
                .defaultSuccessUrl("/home", true)
                .failureUrl("/login?error=true")
                .userInfoEndpoint()
                .oidcUserService(this.oidcUserService());
    }

    private OidcUserService oidcUserService() {
        OidcUserService delegate = new OidcUserService();

        return (userRequest) -> {
            OidcUser oidcUser = delegate.loadUser(userRequest);

            // Custom logic to handle the OIDC user
            // For example, you can map the authorities or extract additional information

            return oidcUser;
        };
    }
}

4. 自定义登录页面

如果你有自定义的登录页面,可以在控制器中处理:

代码语言:javascript
复制
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class LoginController {

    @GetMapping("/login")
    public String login() {
        return "login"; // 返回自定义的登录页面视图
    }
}

5. 检查重定向URL

确保你的OAuth2提供者配置中的redirect-uri正确,并且与你的应用程序配置匹配。通常,redirect-uri应该是类似于{baseUrl}/login/oauth2/code/{registrationId}的格式。

6. 日志和调试

启用调试日志以查看Spring Security的详细信息:

代码语言:javascript
复制
logging:
  level:
    org.springframework.security: DEBUG
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spring Cloud Security配置OAuth2客户端来访问受保护API示例

    在GitHub注册应用程序时,我们需要提供回调URL,该URL将在用户授权后重定向回我们应用程序。...我们可以使用http://localhost:8080/login/oauth2/code/github作为回调URL,这是Spring Security默认OAuth2回调URL。...://localhost:8080/login/oauth2/code/github"); }}在上面的示例代码中,我们覆盖了configure(HttpSecurity)方法来配置安全性。...我们还使用.oauth2Login()配置了OAuth2登录流程。我们还覆盖了configure(ClientDetailsServiceConfigurer)方法来配置OAuth2客户端详细信息。...如果用户已经通过OAuth2登录,并且已经授权了我们应用程序,则可以成功访问该资源。如果用户没有登录或未授权,则将重定向OAuth2提供程序登录页面。

    2.3K20

    可能是第二好 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~

    因为资源服务器会调用授权服务器 /oauth/check_token 接口,而考虑到安全性,我们配置了该接口需要进过客户端认证。...{ @Override public void configure(HttpSecurity http) throws Exception { http.authorizeRequests...② #configure(HttpSecurity http) 方法,设置 HTTP 权限。这里,我们设置 /login 接口无需权限访问,其它接口认证后可访问。...③ 处,调用 OAuth2RestTemplate #getAccessToken() 方法调用授权服务器 /oauth/token 接口,进行密码模式授权。...每次请求资源服务器时,都会在请求带上访问令牌,这样它泄露风险是相对高。 因此,出于安全性考虑,访问令牌过期时间比较短,刷新令牌过期时间比较长。

    2K30

    Spring Security 6.x 一文快速搞懂配置原理

    (HttpSecurity http) throws Exception { http .authorizeHttpRequests(authorize -> authorize...实例 而在AbstractConfiguredSecurityBuilder中维护了一个Map>对象,用于缓存各种SecurityConfigure实现类,当调用init和configure时,实际就会遍历这个...Map所有configurer,依次调用对应方法,通常就是在configure方法中,将Filter加入到FilterChain中(下文详述) protected final O doBuild() throws...事实HttpSecurity大约提供了24个Filter相关Configurer配置方法,其中11个Filter是默认加载,整理成表格: 序号 方法 对应Filter 作用 1 headers...对象,另外我们可以在自定义配置类中对其进行一些定制调整 然后当调用HttpSecurity#Build()方法时,就会将取得所有SecurityConfigurer进行遍历,依次调用对应init和configurer

    65800

    Spring Security OAuth实现Gitee快捷登录

    http://localhost:8080 应用描述:非必填,应用描述 应用回调地址:必填,OAuth认证重定向地址,本地开发环境设置为http://localhost:8080/login/oauth2...:授权模式使用授权码模式 (3)redirect-uri:回调地址,填写与Gitee申请一致 (4)client-name:客户端名称,可以在登录选择页面上显示 GiteeOAuth登录需要自定义...provider,Spring Security OAuth提供了配置方式来实现。...演示 启动Spring Boot应用 访问http://localhost:8080/hello时候,会跳转到默认登录页,现在有两个登录选项GitHub和Gitee 点击Gitee,将跳转到Gitee...授权登录页,页面列出了可以访问数据权限 同意授权后,将跳转到http://localhost:8080/login/oauth2/code/gitee地址,客户端创建认证对象后,再被重定向http

    1.1K30

    Spring Boot+OAuth2,一个注解搞定单点登录!

    当然大家也都知道,无状态登录也是有弊端。 所以今天松哥想和大家说一说 Spring Boot+OAuth2 做单点登录,利用 @EnableOAuth2Sso 注解快速实现单点登录功能。...WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws...:1111/oauth/authorize security.oauth2.client.access-token-uri=http://localhost:1111/oauth/token security.oauth2...在第二步发送请求是请求 auth-server 服务东西,这次请求当然也避免不了要先登录,所以再次重定向到 auth-server 登录页面,也就是大家看到统一认证中心。...获取到授权码之后,这个时候会重定向到我们 client1 login 页面,但是实际我们 client1 其实是没有登录页面的,所以这个操作依然会被拦截,此时拦截到地址包含有授权码,拿着授权码

    2.9K34
    领券