В Spring Boot 4.0.2 свойства SAML не могут быть прочитаны из файла YAML.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 В Spring Boot 4.0.2 свойства SAML не могут быть прочитаны из файла YAML.

Сообщение Anonymous »

Я вижу странную проблему. Мое приложение SAML, которое отлично работало в версии 3.5.9, имеет проблемы с чтением свойств SAML из файла application.yml.
Я перешел на самую базовую конфигурацию SAML, и она не работает! См. ниже. Его расположение находится в каталоге ресурсов. Также там находятся учетные данные и файл okta.

Код: Выделить всё

server:
port: 8080

logging:
level:
root: INFO
org.springframework.web: DEBUG
org.springframework.security: DEBUG
org.springframework.security.saml: TRACE
org.opensaml.xmlsec: DEBUG
pattern:
console: "%d{HH:mm:ss.SSS} %-5level - %msg%n"

spring:
security:
saml2:
relyingparty:
registration:
appname:
signing:
credentials:
- private-key-location: "classpath:credentials/private.key"
certificate-location: "classpath:credentials/certificate.crt"
decryption:
credentials:
- private-key-location: "classpath:credentials/private.key"
certificate-location: "classpath:credentials/certificate.crt"
assertingparty:
metadata-uri: "https://integrator-NNNN.okta.com/"
Когда я запускаю загрузочный сервер Spring с этой конфигурацией, он завершается с ошибкой (relyingPartyRegistrationRepository не может быть нулевым)
20:29:21.486 ПРЕДУПРЕЖДЕНИЕ — исключение, возникшее во время инициализации контекста — отмена попытки обновления: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «filterChain», определенный в ресурсе пути к классу [org/mudra/demosaml/BootSecurityConfig.class]: не удалось создать экземпляр [org.springframework.security.web.SecurityFilterChain]: фабричный метод «filterChain» выдал исключение с сообщением: relingingPartyRegistrationRepository не может быть нулевым
Мой класс конфигурации так же прост, как

Код: Выделить всё

@Configuration
public class BootSecurityCon fig {

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {

http.authorizeHttpRequests(authorize ->
authorize.anyRequest().authenticated())
.saml2Login(withDefaults());

return http.build();
}
}
Затем, когда я вручную добавил Bean для репозитория проверяющей стороны (который имитирует файл yaml). Он работает нормально. Итак, я не могу понять, почему он не читает свойства безопасности SAML из файла yaml. Интересно, что свойства журналирования были правильно прочитаны из yaml, а не свойства SAML.

Код: Выделить всё

@Bean
public RelyingPartyRegistrationRepository relyingPartyRegistrations() throws Exception {

ClassPathResource keyResource
= new ClassPathResource("credentials/private.key");
ClassPathResource crtResource
= new ClassPathResource("credentials/certificate.crt");

// Load your private key and certificate
RSAPrivateKey key = (RSAPrivateKey) KeySupport.decodePrivateKey(
keyResource.getInputStream(), null);
Collection certs = X509Support.decodeCertificates(
crtResource.getInputStream());

// Create the credential specifically for decryption
Saml2X509Credential decryption = Saml2X509Credential.decryption(
key, certs.iterator().next());
Saml2X509Credential signing  = Saml2X509Credential.signing(
key, certs.iterator().next());

RelyingPartyRegistration registration = RelyingPartyRegistrations
.fromMetadataLocation("https://integrator-NNN.okta.com/")
.registrationId("appname")
.decryptionX509Credentials(c -> c.add(decryption)                     .signingX509Credentials(c -> c.add(signing))
.build();
return new InMemoryRelyingPartyRegistrationRepository(registration);
}
Файл pom прост. Вот и все

Код: Выделить всё


org.springframework.boot
spring-boot-starter-security


org.springframework.boot
spring-boot-starter-webmvc


org.springframework.security
spring-security-saml2-service-provider



Кроме того, yaml отлично работает в Spring boot 3.5.9 и Spring Security 6. Я меняю pom,xml на 3.5.9, перезапускаю, и все работает нормально! Согласно документу, имя свойств с версии 3.5.9 на 4.0 не изменилось - я посмотрел документ SAML в Интернете, и в их примерах используются те же имена свойств.
У кого-нибудь есть какие-нибудь мысли?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -yaml-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»