Pac4j Saml filenotFoundException в контейнере Docker после миграцииJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Pac4j Saml filenotFoundException в контейнере Docker после миграции

Сообщение Anonymous »

Я мигрирую приложение Spring Boot в новые версии Spring и PAC4J (V6.1.2) для аутентификации SAML. Приложение работает правильно на моей локальной машине, но сбой при развертывании в контейнер Docker на Kubernetes (EKS). Проблема связана с загрузкой файла метаданных поставщиков услуг SAML (SP). следует: < /p>
java.io.FileNotFoundException: class path resource [saml/sp-metadata-dev.xml] cannot be resolved to absolute file path because it does not reside in the file system: jar:nested:/home/tomcat/ssti-service-desk-portal-web-app.jar/!BOOT-INF/classes/!/saml/sp-metadata-dev.xml
at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:223)
at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:204)
at org.pac4j.saml.metadata.SAML2FileSystemMetadataGenerator.createMetadataResolver(SAML2FileSystemMetadataGenerator.java:34)
...
< /code>
Мой вопрос:
это известная проблема или ограничение в PAC4J V6.1.2? Есть ли способ настроить PAC4J для чтения метаданных SP через входной серий из объекта ресурса, чтобы избежать этой ошибки, или является ручной копией файла во временный каталог.// SamlConfig.java
@Value("${pac4j.saml.sp-metadata}")
private String spMetadata;
// ...
@Bean
public Config config() {
Resource spMetadataResource = resourceLoader.getResource("classpath:" + spMetadata);
// The problem occurs here
samlConfig.setServiceProviderMetadataResource(spMetadataResource);
//...
}
< /code>
и мой файл свойств: < /p>
свойства
pac4j.saml.sp-metadata=saml/sp-metadata-dev.xml
Мое понимание:
Я знаю, что метод getfile () провалится, потому что файл находится внутри jar. Мой код использует правильный объект ресурса, но сама библиотека PAC4J, кажется, заставляет вызов getFile (). Это разрешает FilenotFoundException. < /P>
// SamlConfig.java - Workaround Method
private void copyMetadataFile() {
// ...
try (InputStream inStream = resourceLoader.getResource("classpath:" + spMetadata).getInputStream();
OutputStream outStream = new FileOutputStream(new File(spMetadata).getAbsoluteFile())) {
// Copy the file
FileCopyUtils.copy(inStream, outStream);
} catch (IOException e) {
// ...
}
}
// In my config() method, I call this and then read from the filesystem
@Bean
public Config config() {
copyMetadataFile();
SAML2Configuration samlConfig = new SAML2Configuration(...);
samlConfig.setServiceProviderMetadataResource(new FileSystemResource(new File(spMetadata).getAbsoluteFile()));
//...
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... -migration
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Pac4j Saml filenotFoundException в контейнере Docker после миграции
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • SAML 2.0 Единый выход из системы с помощью библиотеки pac4j в приложении Java
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • SAML-профиль play-pac4j не находится в сеансе после перенаправления
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • SAML-профиль play-pac4j не находится в сеансе после перенаправления
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Spring Security SAML: принимать только подписанные ответные сообщения SAML от IDP
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

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