Printemps OAuth redirect_uri pas à l'aide de https

J'ai un Ressort de Démarrage 1.3.0 application avec Spring Security OAuth inclus comme une sorte d'intégration SSO.

Le problème est que l'application est en cours d'exécution dans un non-SSL environnement avec un port non standard derrière un répartiteur de charge (F5) que les forces SSL et l'authentification OAuth fournisseur exige que tous les Url de redirection être enregistré comme https, mais le Printemps client OAuth (auto-configuré avec @EnableOAuthSso) ne rediriger vers le OAuth fournisseur avec l'URL suivante...

https://[provider_host]/oauth/autoriser?client_id=[éditer]&redirect_uri=http://[application_host]/login&response_type=code&étendue=[éditer]&etat=IpMYTe

Noter que le retour redirect_uri est généré comme http. Même si la touche F5 va forcer le https sur le chemin du retour, notre OAuth fournisseur ne sera pas permettre à un non-SSL redirect URI. Comment puis-je configurer cela?

À l'exception de mon Ressort des Données JPA contrôleurs, c'est l'intégralité de l'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 {

}

application.propriétés

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
J'ai un problème similaire, mais au lieu de vouloir être en HTTPS, l'URI est toujours revenu à moi comme HTTPS quand je veux l'adresse HTTP. Sauriez-vous comment faire la même chose mais dans le sens inverse? J'ai déjà appliqué votre réponse à la requête.fichier de propriétés à pas de chance.

OriginalL'auteur Zack Hoffmann | 2015-11-19