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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem Graben, der manuell über die Konfiguration von Klassen, die ich finden konnte, und fügen Sie die folgende, der hat den trick...
Ich bin nicht davon überzeugt, es gibt nicht einen besseren Weg, um das problem zu lösen der zwingen, einen HTTPS-URL weiterleiten, aber dieser fix funktioniert für mich.
Stellen Sie sicher, dass Ihre Anwendung versteht
x-forwarded
- Header, bei Ihrem load balancer.Setzen diese in meiner Anwendung.yml Feste meine sehr ähnliches problem mit einer Anwendung, die hinter einer AWS ELB:
Edit: Dies kann vereinfacht werden, mit die Allgemeine Konfiguration:
Ich hatte das gleiche problem.
Ich füge Thesen zwei Parameter force HTTPS in redirect_uri :
Funktioniert es : "redirect_uri" ist jetzt über HTTPS
müssen Sie möglicherweise verwenden Sie
spring.oauth2.client.access-token-uri
Konfigurations-parameter geändert, nachdem 1.3.0.M1
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3.0-M1-Configuration-Changelog