У меня есть проект Spring SAML с использованием java-конфигураций, где я загружаю метаданные IDP из файла с помощью FilesystemMetadataProvider
. Я хотел бы иметь возможность загружать IDP из базы данных при запуске. Если мне нужно изменить конфигурацию, я не хочу перезагружать приложение для загрузки изменений. Есть перезагрузка HTTPMetadataProvider
, есть ли один для баз данных? Это возможно?Загрузка IDP из базы данных Spring SAML
0
A
ответ
0
Существует не реализация AbstractReloadingMetadataProvider, которая делает то, что вы ищете изначально, однако ее нетрудно реализовать самостоятельно.
SSOProfile содержит XML IDP. AbstractReloadingMetadataProvider
будет использовать переопределенные методы для периодического перехода в базу данных и перезагрузки любых изменений в метаданных.
public class DatabaseMetadataProvider extends AbstractReloadingMetadataProvider {
private final Logger log = LoggerFactory.getLogger(DatabaseMetadataProvider.class);
private SSOProfileService samlService;
private String entityId;
public DatabaseMetadataProvider(Timer backgroundTaskTimer, String entityId, SSOProfileService samlService) throws MetadataProviderException {
super(backgroundTaskTimer);
if (entityId == null) {
throw new MetadataProviderException("EntityId may not be null");
}
this.entityId = entityId;
if (samlService == null) {
throw new MetadataProviderException("Saml Service must not be null");
}
this.samlService = samlService;
}
@Override
protected String getMetadataIdentifier() {
return entityId;
}
@Override
protected byte[] fetchMetadata() throws MetadataProviderException {
SSOProfile ssoSaml = samlService.getSSOSamlProfileByEntityID(entityId);
if (ssoSaml == null) {
log.error("Could not find a valid entity in the DB for " + entityId + " to refresh from. ");
return null;
} else {
log.trace("Found idp metadata for " + ssoSaml.getEntityID() + ": " + ssoSaml.getIdpMetaData());
return ssoSaml.getIdpMetaData().getBytes(StandardCharsets.UTF_8);
}
}
/** {@inheritDoc} */
@Override
public synchronized void destroy() {
samlService = null;
entityId = null;
super.destroy();
}
}
Следующая вещь, которую вам нужно будет это услуга, которая при запуске может возвращать список этих MetadataProviders и загрузить их в свой MetadataManager.
Смежные вопросы
- 1. spring saml - инициированный IDP SSO
- 2. Spring Security SAML Global Logout не отправляет ответ saml IDP
- 3. IDP инициировал SSO для Spring SAML Extension
- 4. IdP инициировал SSO с использованием Spring SAML
- 5. Spring MVC - загрузка данных из базы данных
- 6. Как заставить Spring SAML перечитать мои метаданные IDP?
- 7. PHP SAML IdP First
- 8. Отправка утверждения SAML из IDP на SP
- 9. Проблема Microsoft ADFS IDP SAML
- 10. SAML и OAuth - существующие IDP
- 11. Маршруты в Rails SAML IdP
- 12. паспорта SAML интеграции с IDP
- 13. попросили повторную аутентификацию с тем же IDP - Spring SAML
- 14. Нет IDP-метаданных IDP
- 15. Пропустить аутентификацию IDP в SAML
- 16. Google Apps как SAML IdP
- 17. spring-security-saml, IdP не может зашифровать утверждение?
- 18. Spring SAML - поддержка индивидуального утверждения SAML
- 19. IdP формат метаданных для весенне-безопасности SAML
- 20. Перенаправление в IdP Автоматически с использованием Spring SAML
- 21. Spring SAML 2.0 - Импорт локальных метаданных IDP - MetadataProviderException
- 22. Spring security Saml - Разница во времени между SP и IDP
- 23. Использование Spring SAML в качестве IDP, а не SP
- 24. Как подключить приложение Spring SAML к WebLogic IDP?
- 25. SPRING SAML Аутентификация не работает
- 26. Идентификатор безопасности SAML IDP инициирован SSO
- 27. Реализация SAML Spring Security
- 28. Явные атрибуты SAML в Spring Saml
- 29. SSO-SAML Вход в IDP из служебного провизора
- 30. утверждение весны-saml от поддельного idp