Frühjahr OAuth redirect_uri nicht mit https

Ich habe eine Spring-Boot-1.3.0-Anwendung mit Spring Security, OAuth enthalten, als eine Art von SSO-integration.

Das problem ist, dass die Anwendung ausgeführt wird in einem nicht-SSL-Umgebung mit einer nicht-standard-port hinter einem load balancer (F5), der Sie zwingt SSL und OAuth-provider erfordert, dass alle redirect-URLs registriert werden als https, aber die Feder OAuth-client (auto-Konfiguration mit @EnableOAuthSso), nur eine Umleitung zu der OAuth-Anbieter mit der folgenden URL...

https://[provider_host]/oauth/autorisieren?client_id=[geschwärzt]&redirect_uri=http://[application_host]/login&response_type=code&scope=[geschwärzt]&state=IpMYTe

Beachten Sie, dass die Rückkehr redirect_uri generiert wird, als http. Obwohl die F5 erzwingen von https auf dem Weg zurück, unsere OAuth-Anbieter wird nicht zulassen, dass eine nicht-SSL-redirect-URI. Wie kann ich dies konfigurieren?

Mit Ausnahme meiner Spring Data JPA Controller, das ist die Gesamtheit der app...

AppConfig.java

@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;
    }

}

SecurityConfig.java

@Configuration
@EnableOAuth2Sso
public class SecurityConfig {

}

Anwendung.Eigenschaften

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
  • Ich habe ein ähnliches problem, aber statt zu wollen, HTTPS, der URI ist immer wieder zu mir wie HTTPS, wenn ich wollen HTTP. Würden Sie wissen, wie zu tun die gleiche Sache, aber in die entgegengesetzte Richtung? Hab ich auch schon angewendet, Ihre Antwort an die Anwendung.Eigenschaften-Datei-ohne Erfolg.
Schreibe einen Kommentar