Skip to content
Snippets Groups Projects
Commit 8af5fc18 authored by OZGCloud's avatar OZGCloud
Browse files

Merge branch 'master' into OZG-6362-Antworten-aus-dem-MUK-einem-Vorgang-zuordnen

parents 88f52659 15055bed
No related branches found
No related tags found
No related merge requests found
/*
* Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
* Copyright (c) 2024. Das Land Schleswig-Holstein
* vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
......@@ -36,10 +35,9 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import jakarta.annotation.PostConstruct;
import org.opensaml.core.config.ConfigurationService;
import org.opensaml.core.config.InitializationService;
import org.opensaml.core.criterion.EntityIdCriterion;
......@@ -72,6 +70,7 @@ import org.springframework.security.saml2.Saml2Exception;
import org.springframework.security.saml2.core.Saml2X509Credential;
import org.springframework.util.Assert;
import jakarta.annotation.PostConstruct;
import lombok.Getter;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
......@@ -180,12 +179,9 @@ class BayernIdSamlConfiguration {
List<Saml2X509Credential> getCertificatesFromMetadata() {
try (var metadata = antragraumProperties.getMetadataUri().getInputStream()) {
var xmlObject = xmlObject(metadata);
if (xmlObject instanceof EntitiesDescriptor descriptors) {
for (EntityDescriptor descriptor : descriptors.getEntityDescriptors()) {
if (descriptor.getIDPSSODescriptor(SAMLConstants.SAML20P_NS) != null) {
return getVerificationCertificates(descriptor);
}
}
var descriptorOptional = findEntityDescriptor(xmlObject);
if (descriptorOptional.isPresent()) {
return getVerificationCertificates(descriptorOptional.get());
}
} catch (IOException e) {
throw new Saml2Exception("Error reading idp metadata.", e);
......@@ -210,6 +206,17 @@ class BayernIdSamlConfiguration {
}
}
private Optional<EntityDescriptor> findEntityDescriptor(XMLObject metadata) {
Optional<EntityDescriptor> descriptor = Optional.empty();
if (metadata instanceof EntityDescriptor entityDescritor) {
descriptor = Optional.of(entityDescritor);
} else if (metadata instanceof EntitiesDescriptor entitiesDescriptor) {
descriptor = entitiesDescriptor.getEntityDescriptors().stream().findFirst();
}
return descriptor.filter(entityDescriptor -> entityDescriptor.getIDPSSODescriptor(SAMLConstants.SAML20P_NS) != null).stream().findFirst();
}
List<Saml2X509Credential> getVerificationCertificates(EntityDescriptor descriptor) {
var idpssoDescriptor = descriptor.getIDPSSODescriptor(SAMLConstants.SAML20P_NS);
if (idpssoDescriptor == null) {
......
/*
* Copyright (c) 2024.
* Copyright (c) 2024. Das Land Schleswig-Holstein
* vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
......@@ -41,7 +44,7 @@ class BayernIdSamlConfigurationTest {
@Nested
class TestCreationOfParserPool {
@BeforeEach
void setup() throws Exception {
void setup() {
bayernIdSamlConfiguration.initOpenSAML();
}
......@@ -54,7 +57,7 @@ class BayernIdSamlConfigurationTest {
@Nested
class TestCreatingTrustEngine {
@BeforeEach
void setup() throws Exception {
void setup() {
when(properties.getMetadataUri()).thenReturn(new InputStreamResource(TestUtils.loadFile("bayernid-idp-infra.xml")));
when(properties.getEntityId()).thenReturn("https://antragsraum.ozgcloud.de/");
bayernIdSamlConfiguration.initOpenSAML();
......@@ -67,7 +70,7 @@ class BayernIdSamlConfigurationTest {
}
@Nested
class TestLoadingVerficationData {
class TestLoadingVerificationData {
@Test
void shouldCreateVerificationCriteria() {
when(properties.getEntityId()).thenReturn("https://antragsraum.ozgcloud.de/");
......@@ -77,11 +80,19 @@ class BayernIdSamlConfigurationTest {
}
@Test
void shouldLoadVerificationCert() throws Exception {
void shouldLoadVerificationCertBayernId() {
when(properties.getMetadataUri()).thenReturn(new InputStreamResource(TestUtils.loadFile("bayernid-idp-infra.xml")));
bayernIdSamlConfiguration.initOpenSAML();
assertThat(bayernIdSamlConfiguration.getCertificatesFromMetadata()).isNotNull();
}
@Test
void shouldLoadVerificationCertKeycloak() {
when(properties.getMetadataUri()).thenReturn(new InputStreamResource(TestUtils.loadFile("keycloak-idp.xml")));
bayernIdSamlConfiguration.initOpenSAML();
assertThat(bayernIdSamlConfiguration.getCertificatesFromMetadata()).isNotNull();
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2024. Das Land Schleswig-Holstein
~ vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein
~ Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
~
~ Lizenziert unter der EUPL, Version 1.2 oder - sobald
~ diese von der Europäischen Kommission genehmigt wurden -
~ Folgeversionen der EUPL ("Lizenz");
~ Sie dürfen dieses Werk ausschließlich gemäß
~ dieser Lizenz nutzen.
~ Eine Kopie der Lizenz finden Sie hier:
~
~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
~
~ Sofern nicht durch anwendbare Rechtsvorschriften
~ gefordert oder in schriftlicher Form vereinbart, wird
~ die unter der Lizenz verbreitete Software "so wie sie
~ ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
~ ausdrücklich oder stillschweigend - verbreitet.
~ Die sprachspezifischen Genehmigungen und Beschränkungen
~ unter der Lizenz sind dem Lizenztext zu entnehmen.
-->
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="https://infra-pre-id.bayernportal.de/idp">
<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIFbzCCA1egAwIBAgIJAPdFXXarkBN2MA0GCSqGSIb3DQEBCwUAME4xCzAJBgNV
BAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAPBgNVBAcMCE11ZW5jaGVuMQ0wCwYD
VQQKDARBS0RCMQwwCgYDVQQLDANJRE0wHhcNMjAxMDI3MTMxODQxWhcNMjUxMDI2
MTMxODQxWjBOMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmF5ZXJuMREwDwYDVQQH
DAhNdWVuY2hlbjENMAsGA1UECgwEQUtEQjEMMAoGA1UECwwDSURNMIICIjANBgkq
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzDtWAEdC3J9FD+ti1exRhN1lzNgKWqO2
gQNdJvlt7KGHA2VGGO7tqRogTuoqi/ydtiHJ8+lhp4kcWqyfv7i9HXOncvcsRRmR
dZjUY2Iui6ozJqD5LVm/vP5YfdP7vQPdbqyyfpoJhf3mbMEtdNDdGRnGIPUfDn+C
Fbo37f9tPwMgf3jgh4gxaujtLIhhr9gevVTEeZAFu9EvzLNd3kEtRb7MuXqIOdu1
rW8HlGYFwwVLqEyBn8XG0QAIfhMmGjFMG7z+Kco2quwOmmZVzWQfeH/3AlN2KbcP
t7j+pl+6Bew2AAivP7O+95YKORqQjTu3rPWMF4txPId37MSjoytwBRyd5EACTvhQ
BOGrDFKQUOx6fTtRc8+7XGVz8MdQaZQWQXXh1ByU783twNdnRSrSVIyLdjiy1uCb
jvsSAtbzGBygPIvDo3skCNLNFXsChtHIfFFDK20KPGb0ghEDf2q3hDbFG3ZDGGyn
ZmJcZKuZhJqodJ/++sAXADyTJNAPVYDjKCF4ypELp2Eu/p1gaQPJEb74L/ZFZVOE
JFyXIiaqB9J+fcn/biqHHOmcCi8n9aIiNt1fatr1Z4lQRWoGtKaGU0+bzUSH4Bgs
2EG4u1CI2MKDWqK2aEsHrtu8tbS9LrUmDVKtaEUOeul8xWVa036vp/YUIdiJNZSx
ZG4iTmSOATECAwEAAaNQME4wHQYDVR0OBBYEFFYeltslkaolOmcINXQeSe7nURwp
MB8GA1UdIwQYMBaAFFYeltslkaolOmcINXQeSe7nURwpMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQELBQADggIBAKqAlXoO41SAiycYUOrR90pfwTCysmbtHF5RWSCM
jF2aCG8URJ7bXwC0lBH8E5zCetFZwdqZziQtxzRkIOfhS5uWbH0RDhwuxZG+5RTP
yaHPAZI6e5xHDu8vHl/VbC3lnL/6K8l+Purr/yo8qkJqrPgThZRL9jBQyYRhDSsJ
UyIw5zcKKUQC/JWtMQAQcopbjekCs6xDT1HqIN90Sc/gOfYjNo0dGMNmro9mxcw8
2Iow18KNVdtEexfD+/6x4NPD61pzuQEe09TR+Cv3XyzBoGQ/2arijcPnGvth79ff
VFtRSf3fSs7wEKV9g3mEWXFDtPBhDj6K0kKU/kJfEZixkXl92MY+bmugrtTIrazj
tfrgMglIAHu9XCYWd/gef0J+PNfHsxgbTEr3XSC+5/xoFKPQSw3PgV8lkUDq4mJU
Ky/q4YmA37XQxourFR5pWvF03YACdtq6zPjtVeI7Cvkte6k0YW5S3cx9RmPv6YZh
laZ5ERpWNiv6IjokLsvNeemf2PApjO7Q2EDBIoHBYH31wwJSsyRDrSVmbaqLFI15
fLXeh2A4YbaBDZdGvDiLOAk+dG1wdZ2aGw/uNBzMtc8VeKqI1HPcqIluBA3uUPpy
LLA+9hDPf6Pp4j0gkXxBikz+/h22bFxE1HmDiOSkEn+2NmOHuEFeA+D8jsCAL5VJ
3emK
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://infra-pre-id.bayernportal.de/idp/profile/SAML2/POST/SSO"/>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://infra-pre-id.bayernportal.de/idp/profile/SAML2/Redirect/SSO"/>
</md:IDPSSODescriptor>
</md:EntityDescriptor>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment