Spring Boot OAuth 始终重定向到 HTTP

在 IBM Cloud CF Java Buildpack 上使用 Spring Boot OAuth 2...


https://github.com/ericis/oauth-cf-https-issue


*我已经尝试了以下所有组合。


使用此配置,应用程序会陷入无限的重定向循环中,OAuth 重定向策略将其发送至http,然后此配置将其发送至https.


http.requiresChannel().anyRequest().requiresSecure()


如果没有这个配置,用户可以通过 http 登录(不需要)。


完整配置:


http.

  requiresChannel().anyRequest().requiresSecure().

  authorizeRequests().

    // allow access to...

    antMatchers("favicon.ico", "/login", "/loginFailure", "/oauth2/authorization/ghe")

    .permitAll().anyRequest().authenticated().and().oauth2Login().

    // Codify "spring.security.oauth2.client.registration/.provider"

    clientRegistrationRepository(this.clientRegistrationRepository()).

    // setup OAuth2 client service to use clientRegistrationRepository

    authorizedClientService(this.authorizedClientService()).

    successHandler(this.successHandler()).

    // customize login pages

    loginPage("/login").failureUrl("/loginFailure").

    userInfoEndpoint().

      // customize the principal

      userService(this.userService());

我也尝试过:


要使用的服务器配置 https


server:

  useForwardHeaders: true

  tomcat:

    protocolHeader: x-forwarded-proto

小程序过滤器


import java.io.IOException;


import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;



喵喔喔
浏览 288回答 3
3回答

天涯尽头无女友

由于使用 Spring 5,决定采用下一个解决方案(安全配置):        http            .addFilterBefore(new ForwardedHeaderFilter(), OAuth2AuthorizationRequestRedirectFilter.class)x-forwarded-*标头参数现在处理正确。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java