Ich habe ein Spring SAML-Projekt mit Java-Konfigurationen, wo ich IDP-Metadaten aus einer Datei mit einem FilesystemMetadataProvider
laden. Ich möchte in der Lage sein, IDPs von einer Datenbank beim Start zu laden. Wenn ich die Konfiguration ändern muss, möchte ich die App nicht neu starten müssen, um die Änderungen zu laden. Es gibt eine Nachladung HTTPMetadataProvider
, gibt es eine für Datenbanken? Ist das möglich?Load IDPs aus einer Datenbank Spring SAML
0
A
Antwort
0
Es gibt keine Implementierung der AbstractReloadingMetadataProvider, die tut, was Sie nativ suchen, aber es ist nicht schwierig, Ihre eigenen zu implementieren.
Das SSOProfile enthält das XML des IDP. Die AbstractReloadingMetadataProvider
verwendet die überschriebenen Methoden, um regelmäßig zur Datenbank zu gehen und alle Änderungen an den Metadaten neu zu laden.
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();
}
}
Das nächste, was Sie brauchen, ist ein Dienst, der beim Start eine Liste dieser MetadataProviders zurückkehren und sie in Ihrem MetadataManager zu laden.
Verwandte Themen
- 1. Rails - Mit omniauth-saml mit mehreren IDPs
- 2. Spring Security SAML Extension - Load Balancer Unterstützung
- 3. Metadatenaktualisierung Deadlock (Spring-Security-Saml)
- 4. Spring SAML InResponseToField
- 5. Explizite SAML-Attribute in Spring Saml
- 6. Spring Boot: Load @Value aus YAML-Datei
- 7. Onelogin SAML mit AWS Load Balancer
- 8. Spring SAML WSO2 Refresh Assertion
- 9. Load django Vorlage aus der Datenbank
- 10. SAML Spring Security Sitzung Timeout
- 11. Spring Security SAML mit OKTA
- 12. shibboleth-saml mit Spring Boot
- 13. Wie wähle ich automatisch den konfigurierten SAML-Identitätsprovider in einer mandantenfähigen Umgebung aus, um SSO mit Spring SAML auszuführen
- 14. Spring Annotation Lazy Load
- 15. SAML-Attribute aus SAML-Token lesen
- 16. Spring Security SAML DisabledException nicht ausgelöst
- 17. mdui metadata extension mit spring-saml
- 18. Load Spring application.profiles von S3
- 19. Fügen Sie die erforderlichen Ansprüche in RP-Metadaten mithilfe von spring-security-saml ein
- 20. Wie kann ich Global Logout in einer Multi-Tenant-SAML-Anwendung mit Spring-Security-Saml arbeiten?
- 21. Spring SAML Zugriff wird nach einer Minute verweigert
- 22. Warum werden in Spring Saml cacerts ignoriert?
- 23. Spring SAML-Konfiguration bricht andere http-Verbindungen
- 24. Spring Security SAML - Zwei Hostnamen Problem
- 25. ist ManageNameID von Spring Saml unterstützt?
- 26. vertrauenswürdige Zertifikateinträge sind nicht kennwortgeschützt Spring SAML
- 27. Spring Security SAML mit Standard-Java-Anwendung
- 28. VS Load Tests ohne Datenbank
- 29. Spring Security SAML mit vorhandenen J2EE-Anwendung (Not-Spring basiert)
- 30. Grails Spring Security - Load "interceptUrlMap" dynamisch