Skip to content
Snippets Groups Projects
Commit 9983f0f0 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-7092 add itcase

parent 4659fac0
No related branches found
No related tags found
1 merge request!1OZG-7092 Anpassung TokenChecker
...@@ -16,6 +16,7 @@ import org.opensaml.security.credential.criteria.impl.EvaluableUsageCredentialCr ...@@ -16,6 +16,7 @@ import org.opensaml.security.credential.criteria.impl.EvaluableUsageCredentialCr
import org.opensaml.security.criteria.UsageCriterion; import org.opensaml.security.criteria.UsageCriterion;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import de.ozgcloud.token.TokenValidationProperties; import de.ozgcloud.token.TokenValidationProperties;
import de.ozgcloud.token.TokenValidationProperties.TokenValidationProperty; import de.ozgcloud.token.TokenValidationProperties.TokenValidationProperty;
...@@ -35,6 +36,7 @@ public class SamlConfiguration { ...@@ -35,6 +36,7 @@ public class SamlConfiguration {
} }
@Bean @Bean
@DependsOn("xmlObjectProviderRegistry")
SamlServiceRegistry samServiceRegistry(TokenValidationProperties tokenValidationProperties) { SamlServiceRegistry samServiceRegistry(TokenValidationProperties tokenValidationProperties) {
var registryBuilder = SamlServiceRegistry.builder(); var registryBuilder = SamlServiceRegistry.builder();
for (var tokenEntity : tokenValidationProperties.getEntities()) { for (var tokenEntity : tokenValidationProperties.getEntities()) {
......
logging: logging:
level: level:
"net.devh.boot.grpc": INFO ROOT: ERROR,
"org.springframework": ERROR
"org.opensaml.xmlsec.encryption.support": DEBUG "org.opensaml.xmlsec.encryption.support": DEBUG
config: "token-checker-server/src/main/resources/log4j2-local.xml" "de.ozgcloud": INFO
config: classpath:log4j2-local.xml
ozgcloud: ozgcloud:
token: token:
check: check:
......
/*
* 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.
*/
package de.ozgcloud.token;
import static org.assertj.core.api.Assertions.*;
import java.util.Map;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Import;
import de.ozgcloud.common.test.ITCase;
import de.ozgcloud.common.test.TestUtils;
import de.ozgcloud.token.saml.SamlTrustEngineFactoryTestConfiguration;
import net.devh.boot.grpc.client.inject.GrpcClient;
@ITCase
@SpringBootTest(properties = {
"grpc.server.inProcessName=test",
"grpc.client.token-checker.address=in-process:test",
})
@Import(SamlTrustEngineFactoryTestConfiguration.class)
public class TokenCheckGrpcServiceITCase {
@GrpcClient("token-checker")
private TokenCheckServiceGrpc.TokenCheckServiceBlockingStub tokenCheckerStub;
@Nested
class TestCheckToken {
private static final String POSTFACH_ID = "28721c6f-b78f-4d5c-a048-19fd2fc429d2";
private static final String TRUST_LEVEL = "STORK-QAA-Level-1";
@Test
void shouldAcceptToken() {
var token = TestUtils.loadTextFile("SamlResponseBayernId.xml");
var result = tokenCheckerStub.checkToken(buildCheckTokenRequest(token));
assertThat(result.getTokenValid()).isTrue();
}
@Test
void shouldSetClientAttribute() {
var token = TestUtils.loadTextFile("SamlResponseBayernId.xml");
var result = tokenCheckerStub.checkToken(buildCheckTokenRequest(token));
assertThat(result.getTokenAttributes().getPostfachId()).isEqualTo(POSTFACH_ID);
assertThat(result.getTokenAttributes().getTrustLevel()).isEqualTo(TRUST_LEVEL);
assertThat(getOtherFields(result)).isNotEmpty().doesNotContainKeys(TokenAttribute.POSTFACH_ID_KEY, TokenAttribute.TRUST_LEVEL_KEY);
}
private GrpcCheckTokenRequest buildCheckTokenRequest(String token) {
return GrpcCheckTokenRequest.newBuilder().setToken(token).build();
}
private Map<String, String> getOtherFields(GrpcCheckTokenResponse result) {
return result.getTokenAttributes().getOtherFieldsList().stream()
.collect(Collectors.toMap(GrpcOtherField::getName, GrpcOtherField::getValue));
}
}
}
/*
* 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.
*/
package de.ozgcloud.token.saml;
import static org.mockito.Mockito.*;
import org.opensaml.xmlsec.signature.support.SignatureTrustEngine;
import org.springframework.context.annotation.Bean;
import lombok.SneakyThrows;
public class SamlTrustEngineFactoryTestConfiguration {
@SneakyThrows
@Bean
SamlTrustEngineFactory samlTrustEngineFactory() {
SignatureTrustEngine signatureTrustEngine = mock(SignatureTrustEngine.class);
when(signatureTrustEngine.validate(any(), any())).thenReturn(true);
return when(mock(SamlTrustEngineFactory.class).buildSamlTrustEngine(any())).thenReturn(signatureTrustEngine).getMock();
}
}
logging:
level:
ROOT: ERROR,
"org.springframework": ERROR
"org.opensaml.xmlsec.encryption.support": DEBUG
"de.ozgcloud": INFO
config: classpath:log4j2-local.xml
ozgcloud:
token:
check:
entities:
- idpEntityId: "https://infra-pre-id.bayernportal.de/idp"
key: "classpath:test1-enc.key"
certificate: "classpath:test1-enc.crt"
metadata: "classpath:metadata/bayernid-idp-infra.xml"
mappings:
postfachId: "urn:oid:2.5.4.18"
trustLevel: "urn:oid:1.2.40.0.10.2.1.1.261.94"
server:
port: -1
\ 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