Использование SAML с Spring Boot за ELB перенаправляет на http вместо https - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь использовать 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.Я что-то не так делаю?

1 Ответ

0 голосов
/ 22 ноября 2018

Когда IdP SAML 2.0, такой как Okta, перенаправляет обратно к вашему приложению, URL-адрес конечной точки основывается либо на метаданных SAML 2.0, предоставляемых вашим приложением, либо на конфигурации в IdP.

Кроме того, добавление необязательноСвойство назначения в SAML 2.0 AuthnRequest:

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified" 
    Destination="https://my.website.com" IssueInstant="2018-11-22T09:23:08.844Z" Version="2.0" ID="id-f8ee3ab1-6745-42d5-b00f-7845b97fe953">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> ... </Issuer>
...
</samlp:AuthnRequest>
...