Я пытаюсь использовать Okta для аутентификации пользователей из приложения SpringBoot.
Я настроил приложение, следуя Учебному пособию по Okta, из: https://developer.okta.com/blog/2017/03/16/spring-boot-saml
Однако мое приложение позадиELB, и как таковой TLS заканчивается в LB.Поэтому я изменил конфигурацию из учебника в соответствии со своими потребностями.
@Override
protected void configure(final HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/saml*").permitAll()
.anyRequest().authenticated()
.and()
.apply(saml())
.serviceProvider()
.keyStore()
.storeFilePath(this.keyStoreFilePath)
.password(this.password)
.keyname(this.keyAlias)
.keyPassword(this.password)
.and()
.protocol("https")
.hostname(String.format("%s", serverName))
.basePath("/")
.and()
.identityProvider()
.metadataFilePath(this.metadataUrl);
}
Это помогает, но есть проблема.После того как Okta аутентифицирует пользователя, он, наконец, перенаправляется на http-URL вместо https-URL.Я думаю, причина этого в том, что TLS прерывается на LB, и мое приложение фактически получает запрос с http, который отправляется в RelayState.
Это то, что я нашел: spring-boot-security-saml-config-options.md .Он содержит список свойств SAML для безопасности весенней загрузки.Я добавил следующее в файл application.properties
saml.sso.context-provider.lb.enabled = true
saml.sso.context-provider.lb.scheme=https
saml.sso.profile-options.relay-state=<https://my.website.com>
Это не меняет перенаправление http.Я что-то не так делаю?