Spring Boot 2 + OAuth2:配置令牌的身份验证代码交换

阿里

我已经按照有关配置 OAuth2 客户端的Spring Boot OAuth2教程进行操作。不幸的是,一旦“用户”通过 Idp (Okta) 进行身份验证,就会发生带有“代码”的重定向,导致重定向循环:/login -> /authorize... -> /login... -> /login

Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。

有谁知道什么是或可能是问题以及如何解决它?详情如下。

Okta配置:

登录重定向 URI:http://localhost:8080/auth/login

注销重定向 URI:http://localhost:8080/auth/logout

登录发起者:仅应用

启动登录 URI:http://localhost:8080/auth/login

配置属性是:

okta:
  oauth2:
    client:
      client-id: clientId
      client-secret: clientSecret
      scope: openid profile email
      client-authentication-scheme: form
      access-token-uri: https://mydomain.oktapreview.com/oauth2/myapp/v1/token
      user-authorization-uri: https://mydomain.oktapreview.com/oauth2/myapp/v1/authorize
    resource:
      user-info-uri: https://mydomain.oktapreview.com/oauth2/myapp/v1/userinfo

过滤器是:

  private Filter filter() {
    OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(
        "/login");
    OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(oktaClient(), oauth2ClientContext);
    filter.setRestTemplate(restTemplate);
    UserInfoTokenServices tokenServices = new UserInfoTokenServices(oktaResource().getUserInfoUri(),
        oktaClient().getClientId());
    tokenServices.setRestTemplate(restTemplate);
    filter.setTokenServices(tokenServices);

    return filter;
  }

WebSecurityConfigurerAdapter配置为:

  @Configuration
  @EnableOAuth2Client
  public class WebSecConfig extends WebSecurityConfigurerAdapter {
  ....
  @Override
  public void configure(HttpSecurity http) throws Exception {
    http.antMatcher("/**").authorizeRequests()
        .antMatchers("/", "/login**", "/logout**", "/v2/api-docs", "/configuration/ui",
            "/configuration/security", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**")
        .permitAll()
        .anyRequest().authenticated().and().exceptionHandling()
        .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login")).and().csrf()
        .csrfTokenRepository(
            CookieCsrfTokenRepository.withHttpOnlyFalse()).and().addFilterBefore(filter(),
        BasicAuthenticationFilter.class);
  }
  ....
  }

更新:解决方案是改变LoginUrlAuthenticationEntryPoint("/login")LoginUrlAuthenticationEntryPoint("/")并重新创建授权服务器。

马特·雷布尔

您应该使用默认授权服务器或您创建的授权服务器。如果您使用默认值,它应该类似于:

https://mydomain.oktapreview.com/oauth2/default

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Spring Boot 中使用预定义的令牌绕过 Oauth2 身份验证?

使用 spring-boot-starter-oauth2-client 检索 OAuth2 3-legged 身份验证的访问令牌

如何使用Spring Boot + Angular处理外部OAuth2身份验证

在Spring Boot OAuth2授权服务器中使用Active Directory身份验证

如何使用Spring Boot伪装客户端进行Oauth2身份验证?

Spring Boot + oauth2:访问此资源需要完全身份验证

使用Spring Boot进行OAuth2身份验证后无法正确重定向

spring boot oauth2-使用基本身份验证时无法获取访问令牌

将Azure Active Directory用作Spring-boot REST服务的OAUTH2身份验证服务

Spring Boot基本身份验证和OAuth2在同一项目中?

在为令牌交换身份验证代码时遇到问题,请转到OAuth2

Spring,Oauth2:刷新令牌后身份验证详细信息丢失

在Spring OAuth2中配置安全性:身份验证请求的访问被拒绝

Spring Security中的Microsoft Graph OAuth2身份验证配置-错误AADSTS90014

Javascript WebApp 的 Spring Security Oauth2 身份验证

交换访问令牌的授权码时,为什么收到无效的令牌响应?(Spring Boot,oauth2,azure)

无法通过 Spring Boot OAuth2 生成 JWT 令牌

如何将Spring Boot与Spotify OAuth 2身份验证集成

Spring boot、Security、OAuth2:是否可以使用自定义 AuthorizationCodeResourceDetails?身份验证服务器需要重定向 url 中的特定参数

Spring Boot Oauth2扩展DefaultTokenServices

了解Spring Boot的Oauth2入门

Spring Boot 2.0.0 + OAuth2

Oauth2 + Spring Boot 资源给大家

在令牌验证期间,在 spring security oauth2 中从资源服务器发送到身份验证服务器的确切内容

Spring Security OAuth2-@ EnableOauth2Sso,但也接受令牌作为身份验证

在Spring Security OAuth2实现中对成功的OAuth2身份验证设置cookie

使用Spring Security oauth2进行两因素身份验证

Spring OAuth2和AngularJS应用程序中的身份验证/授权

自定义您使用OAuth2从Spring Security的身份验证错误