gpt4 book ai didi

oauth - Spring OAuth redirect_uri 不使用 https

转载 作者:行者123 更新时间:2023-12-03 12:32:23 26 4
gpt4 key购买 nike

我有一个 Spring Boot 1.3.0 应用程序,其中包含作为一种 SSO 集成的 Spring Security OAuth。

问题是应用程序在非 SSL 环境中运行,负载均衡器 (F5) 后面有一个非标准端口,强制 SSL 和 OAuth 提供程序要求将所有重定向 URL 注册为 https,但 Spring OAuth 客户端(自动-配置为@EnableOAuthSso) 只会重定向到具有以下 URL 的 OAuth 提供程序...

https://[provider_host]/oauth/authorize?client_id=[redact] &redirect_uri= http://[application_host]/login &response_type=code&scope=[redact]&state=IpMYTe

请注意,返回redirect_uri 生成为http。尽管 F5 会在返回的途中强制它使用 https,但我们的 OAuth 提供程序将不允许非 SSL 重定向 URI。我该如何配置?

除了我的 Spring Data JPA Controller 之外,这是整个应用程序......

应用程序配置文件

@SpringBootApplication(exclude = { HibernateJpaAutoConfiguration.class })
@EnableJpaRepositories
public class AppConfig extends SpringBootServletInitializer {

public static void main(final String... args) {
SpringApplication.run(AppConfig.class, args);
}

@Autowired
public DataSource dataSource;

@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean getEntityManagerFactoryInfo() {
final LocalContainerEntityManagerFactoryBean fac = new LocalContainerEntityManagerFactoryBean();
fac.setDataSource(dataSource);
fac.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
fac.setPackagesToScan("[redact]");

final Properties props = new Properties();
props.put("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect");
props.put("hibernate.show_sql", "true");
props.put("hibernate.format_sql", "true");
fac.setJpaProperties(props);

return fac;
}

@Bean(name = "transactionManager")
public PlatformTransactionManager getTransactionManager() {
final JpaTransactionManager transactMngr = new JpaTransactionManager();
transactMngr.setEntityManagerFactory(getEntityManagerFactoryInfo().getObject());
return transactMngr;
}

}

安全配置文件
@Configuration
@EnableOAuth2Sso
public class SecurityConfig {

}

应用程序属性
server.port=9916
server.contextPath=

server.use-forward-headers=true

security.oauth2.client.clientId=[redact]
security.oauth2.client.clientSecret=[redact]
security.oauth2.client.scope=[redact]
security.oauth2.client.accessTokenUri=https://[provider_host]/oauth/token
security.oauth2.client.userAuthorizationUri=https://[provider_host]/oauth/authorize
security.oauth2.resource.userInfoUri=https://[provider_host]/oauth/me
security.oauth2.resource.preferTokenInfo=false

logging.level.org.springframework=TRACE

最佳答案

在通过配置类手动挖掘后,我能够找到并添加以下内容,这起到了作用......

security.oauth2.client.pre-established-redirect-uri=https://[application_host]/login
security.oauth2.client.registered-redirect-uri=https://[application_host]/login
security.oauth2.client.use-current-uri=false

我不相信没有更好的方法来解决强制 HTTPS 重定向 URL 的问题,但此修复程序对我有用。

关于oauth - Spring OAuth redirect_uri 不使用 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33812471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com