diff --git a/.gitignore b/.gitignore
index eacd2682..89bb903d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,5 @@ yarn-error.log
# eslint section
!.eslintrc.js
.eslintcache
+# docker section
+docker-compose.override.yml
diff --git a/e2e/package.json b/e2e/package.json
index c5ec8e84..2b519893 100644
--- a/e2e/package.json
+++ b/e2e/package.json
@@ -15,6 +15,7 @@
"aws-sdk": "^2.1158.0",
"jest": "27",
"jest-puppeteer": "^6.1.0",
+ "node-fetch": "^2",
"puppeteer": "^14.2.1",
"ts-jest": "^28.0.4",
"typescript": "4.9.5"
diff --git a/e2e/scenarios/basic/docker-compose.yml b/e2e/scenarios/basic/docker-compose.yml
index 167600ef..5b7883b5 100644
--- a/e2e/scenarios/basic/docker-compose.yml
+++ b/e2e/scenarios/basic/docker-compose.yml
@@ -37,7 +37,7 @@ services:
- spid-net
redis:
- image: wodby/redis:3.2-2.1.5
+ image: wodby/redis:6
environment:
REDIS_TIMEOUT: 300
REDIS_TCP_KEEPALIVE: 60
diff --git a/e2e/scenarios/basic/index.test.ts b/e2e/scenarios/basic/index.test.ts
index 4c2a3e85..59b0174d 100644
--- a/e2e/scenarios/basic/index.test.ts
+++ b/e2e/scenarios/basic/index.test.ts
@@ -4,9 +4,10 @@ import {
littleTime,
withBrowser,
clickAnyway,
- startupTime,
+ startupTime
} from "../../utils/misc";
import { host, showBrowser, testEntityID, testCredentials } from "./config";
+import fetch from "node-fetch";
const puppeteer = require("puppeteer");
@@ -21,7 +22,7 @@ describe("Basic", () => {
withBrowser(
puppeteer,
showBrowser
- )(async (browser) => {
+ )(async browser => {
const page = await browser.newPage();
/* open login page */ {
@@ -56,4 +57,12 @@ describe("Basic", () => {
expect(url).toEqual(expect.stringContaining("/success"));
}
}));
+ it("healthcheck should return a success", async () => {
+ const result = await fetch(`${host}/healthcheck`)
+ .then(res => res.json())
+ .catch(err => new Error(err));
+
+ expect(result).not.toBeInstanceOf(Error);
+ expect(result).toStrictEqual("OK");
+ });
});
diff --git a/e2e/scenarios/with-aws-s3/docker-compose.yml b/e2e/scenarios/with-aws-s3/docker-compose.yml
index cbdb6699..eb6e738e 100644
--- a/e2e/scenarios/with-aws-s3/docker-compose.yml
+++ b/e2e/scenarios/with-aws-s3/docker-compose.yml
@@ -38,7 +38,7 @@ services:
- spid-net
redis:
- image: wodby/redis:3.2-2.1.5
+ image: wodby/redis:6
environment:
REDIS_TIMEOUT: 300
REDIS_TCP_KEEPALIVE: 60
diff --git a/e2e/scenarios/with-aws-s3/index.test.ts b/e2e/scenarios/with-aws-s3/index.test.ts
index 25309385..a15febbd 100644
--- a/e2e/scenarios/with-aws-s3/index.test.ts
+++ b/e2e/scenarios/with-aws-s3/index.test.ts
@@ -21,6 +21,7 @@ import {
testCredentials,
spidLogStorage
} from "./config";
+import fetch from "node-fetch";
const puppeteer = require("puppeteer");
@@ -147,4 +148,12 @@ describe("With AWS S3", () => {
})
);
});
+ it("healthcheck should return a success", async () => {
+ const result = await fetch(`${host}/healthcheck`)
+ .then(res => res.json())
+ .catch(err => new Error(err));
+
+ expect(result).not.toBeInstanceOf(Error);
+ expect(result).toStrictEqual("OK");
+ });
});
diff --git a/e2e/scenarios/with-redis-cluster/config.ts b/e2e/scenarios/with-redis-cluster/config.ts
new file mode 100644
index 00000000..c0c63ae2
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/config.ts
@@ -0,0 +1,7 @@
+import { envFlag } from "../../utils/misc";
+
+export const host = "http://localhost:9090";
+export const testEntityID = "xx_validator";
+export const showBrowser = envFlag(process.env.DEBUG);
+// see users.json in conf-testenv directory defined for the current spid-testenv instance
+export const testCredentials = ["ada", "password123"];
diff --git a/e2e/scenarios/with-redis-cluster/docker-compose.yml b/e2e/scenarios/with-redis-cluster/docker-compose.yml
new file mode 100644
index 00000000..2d3b9979
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/docker-compose.yml
@@ -0,0 +1,123 @@
+version: "2.2"
+
+services:
+ hub-spid-login:
+ build:
+ context: ../../../
+ dockerfile: Dockerfile
+ environment:
+ - NODE_TLS_REJECT_UNAUTHORIZED=0
+ env_file:
+ - env.scenario
+ depends_on:
+ - redis-cluster
+ - spid-saml-check
+ expose:
+ - ${SERVER_PORT}
+ ports:
+ - ${SERVER_PORT}:${SERVER_PORT}
+ command: ["yarn", "start"]
+ volumes:
+ - "./res/certs:/usr/src/app/certs:ro"
+ # - "../../../:/usr/src/app/"
+ networks:
+ - spid-net
+
+ spid-saml-check:
+ image: ghcr.io/pagopa/spid-saml-check:v.1.8.3-snapshot
+ restart: unless-stopped
+ environment:
+ - NODE_TLS_REJECT_UNAUTHORIZED=0
+ ports:
+ - ${SPID_DEMO_IDP_PORT}:${SPID_DEMO_IDP_PORT}
+ volumes:
+ - "./res/spidsamlcheck-conf:/spid-saml-check/spid-validator/config"
+ - "./res/hsl-conf:/data/bootstrap"
+ networks:
+ - spid-net
+
+ #
+ # __ __ __ __
+ # .----.-----.--| |__.-----.----| .--.--.-----| |_.-----.----.
+ # | _| -__| _ | |__ --| __| | | |__ --| _| -__| _|
+ # |__| |_____|_____|__|_____|____|__|_____|_____|____|_____|__|
+ #
+ #
+ redis-node-0:
+ image: docker.io/bitnami/redis-cluster:6.2
+ networks:
+ - spid-net
+ ports:
+ - 6380:6379
+ volumes:
+ - redis-node-0-data:/bitnami/redis/data
+ environment:
+ - 'REDIS_NODES=redis-cluster redis-node-0 redis-node-1 redis-node-2 redis-node-3'
+
+ redis-node-1:
+ image: docker.io/bitnami/redis-cluster:6.2
+ networks:
+ - spid-net
+ ports:
+ - 6381:6379
+ volumes:
+ - redis-node-1-data:/bitnami/redis/data
+ environment:
+ - 'REDIS_NODES=redis-cluster redis-node-0 redis-node-1 redis-node-2 redis-node-3'
+
+ redis-node-2:
+ image: docker.io/bitnami/redis-cluster:6.2
+ networks:
+ - spid-net
+ ports:
+ - 6382:6379
+ volumes:
+ - redis-node-2-data:/bitnami/redis/data
+ environment:
+ - 'REDIS_NODES=redis-cluster redis-node-0 redis-node-1 redis-node-2 redis-node-3'
+
+ redis-node-3:
+ image: docker.io/bitnami/redis-cluster:6.2
+ networks:
+ - spid-net
+ ports:
+ - 6383:6379
+ volumes:
+ - redis-node-3-data:/bitnami/redis/data
+ environment:
+ - 'REDIS_NODES=redis-cluster redis-node-0 redis-node-1 redis-node-2 redis-node-3'
+
+ redis-cluster:
+ image: docker.io/bitnami/redis-cluster:6.2
+ networks:
+ - spid-net
+ ports:
+ - 6379:6379
+ volumes:
+ - redis-cluster-data:/bitnami/redis/data
+ depends_on:
+ - redis-node-0
+ - redis-node-1
+ - redis-node-2
+ - redis-node-3
+ environment:
+ - 'ALLOW_EMPTY_PASSWORD=yes'
+ - 'REDIS_NODES=redis-cluster redis-node-0 redis-node-1 redis-node-2 redis-node-3'
+ - 'REDIS_CLUSTER_CREATOR=yes'
+ #
+ #
+ #
+ #
+
+networks:
+ spid-net:
+ driver: bridge
+ driver_opts:
+ com.docker.network.driver.mtu: 1450
+
+volumes:
+ redis-node-0-data:
+ redis-node-1-data:
+ redis-node-2-data:
+ redis-node-3-data:
+ redis-cluster-data:
diff --git a/e2e/scenarios/with-redis-cluster/env.scenario b/e2e/scenarios/with-redis-cluster/env.scenario
new file mode 100644
index 00000000..068d65f9
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/env.scenario
@@ -0,0 +1,62 @@
+SERVER_PORT=9091
+SPID_DEMO_IDP_PORT=8089
+
+METADATA_PUBLIC_CERT="-----BEGIN CERTIFICATE-----\nMIIDZjCCAk4CCQCVQHwUYXmpaDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJJ\nVDEOMAwGA1UECAwFU3RhdGUxDTALBgNVBAcMBENpdHkxEzARBgNVBAoMCkFjbWUg\nSW5jLiAxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGjAYBgNVBAMMEWh1Yi1zcGlk\nLWxvZ2luLW1zMB4XDTIyMDUxMDEwMTk0M1oXDTIzMDUxMDEwMTk0M1owdTELMAkG\nA1UEBhMCSVQxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRMwEQYDVQQK\nDApBY21lIEluYy4gMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRowGAYDVQQDDBFo\ndWItc3BpZC1sb2dpbi1tczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nALNIjtmHt6QdXMSMR16OmOxPRIS/3NEohB18zCQGokNPgujNqhhn7+BderJ2o6zv\np89gLxUVi07wa9jFRyY3z5DpS66D9xsDLhH9MtEw5u+rz0dja9L38g4GMCiqtS55\nC9HaeqoTlup3oevSo4j8oJaTfkqndNVtogUvtxuXNNMY3Urg4+8YH2jY6XP47Tit\npRUcE/G7tud0phkzvbMHYdkd3s2bRYx/bS2PsHwA/9lb+UtQL/y0e/tnKOJLh8LW\nIGzNlWRTxOzCw6Pidi4gyHAR0JTdU7dIJmE5nczhVPm9reowwKKPrLwGzubNx5CW\nauSbg4C7Ne2Dlxliav1RgxkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAX+SpxZBn\nQB5yq2sOFBu0nzmymmhUvO8vKff7sSiHR0Ts3FtgR2kJtr1Aezh6CwaAJsSlkvxJ\ngIuC1A/y+rPrgn0szj4xHy7tsgO262NcMGIm6Me7WgNsUaJ8Df2wVqzbWLn3lFWn\nhEdw+/qcrzGh9CZl/nyhGikfAf9WgzhhKUrkL7yfozQfRNOgG5ygpVKUxx4kX+d9\nKN56ksZfqFXicqWB/c00Hvz/qiB0k+4C74cEViYUl0YTwDZ5+WTjYqILurIZ1ZJ3\nM07xFPVOGwL3yJzOq/NsYCknNWju6LrqDjwj8Y8TBxuTYlEaNH4Q82Z9PJX25ogk\nxFlTgqLozgQ8FA==\n-----END CERTIFICATE-----"
+METADATA_PRIVATE_CERT="-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCzSI7Zh7ekHVzE\njEdejpjsT0SEv9zRKIQdfMwkBqJDT4LozaoYZ+/gXXqydqOs76fPYC8VFYtO8GvY\nxUcmN8+Q6Uuug/cbAy4R/TLRMObvq89HY2vS9/IOBjAoqrUueQvR2nqqE5bqd6Hr\n0qOI/KCWk35Kp3TVbaIFL7cblzTTGN1K4OPvGB9o2Olz+O04raUVHBPxu7bndKYZ\nM72zB2HZHd7Nm0WMf20tj7B8AP/ZW/lLUC/8tHv7ZyjiS4fC1iBszZVkU8TswsOj\n4nYuIMhwEdCU3VO3SCZhOZ3M4VT5va3qMMCij6y8Bs7mzceQlmrkm4OAuzXtg5cZ\nYmr9UYMZAgMBAAECggEAf1Qr6ECkY1FbPlhmo7hg0YwmnKVrHb1Jv2uPzJJNkcKZ\ntd/DS1weGForty3dZwg6RWUJa08GxoSoA6dwtarzpvaaApLE4BFtGeeavMmfal66\ncvggbxAbgGxSrb83uI7Nnzgs4DfTeiiG/mZ2MOdC4k5UZo7xwlb/t/FAeb71DGqu\ni6kL3d5koTdIFuc67rvBHAzpOnHZd4ao+C7aeULkXwkWb65FqPkRaGbdUCXKPQhl\nXsZTxdJY+PgxSK8Hag/WZm1C8iqwZiWDDnUvaYntEyAgifmDk9akvlZZRT1+eLgE\nfV4p4WegA3AMjUTmO9hN5G+AaWDOjfIP4XE3YOpm9QKBgQDivjG0EOZ/FpGOnzzE\n8+javS8ZZzflxKOBSv6a6+3rIFVW+LAMyMW7c0Qw583vpzdjoKNos0gPJS6P1HDF\np4O/SRVixDPSWxy1uWgObSH7B/Yid7I7OUZXl3kjYttKAJRHY6rXUlRFauU17clQ\nqANRE2e4qj6EC0OVgHnuSUZaDwKBgQDKaqyaxHf67nKfPsH8/pFYAQCzSTIi2SYH\nZF76BY5aWPE+sXpkSmazrBH9yd+5bZFHrMyyoLbXjXco2oxdjHp/8wpYManpzBkk\nUVxexhj2dtuwWK2623wZJ4hkCs1usY8wV6MVEZbSu40q659Q09jyjcIsThFsFBaP\nDOdcUBCYVwKBgH2idvXX+29luOc2sjxLDbXN54AC4kUMzLACNsrueRi0BLU4/ItI\n3876kkkq17+3fohUZNbJp97EcmU9h/Ls26Isw43DOxeOZn0Gq3J6474tbiMxAW+x\nT5mPE48Y4nrBkWdxASNnucvw6+oSxF5NifDteKYoppURjLQUyPrQXQvfAoGBAIEM\n58S4k+H42j0q7tTUnGemJAMqHHvZRAScem0e07ZIVG5rCqQcR0Qv5TyP00JOV7yB\nr/QGwOvGdn0mcS1HXeZrVmIKL9EuXa0o7iJCXDHub3wL3Z9vRbxn1u4pcPYs4CSr\nCv9oumbaSlNd67HFjuB9fpluoG7uk79aM7tIFHx7AoGALe854qT96joFa3hjhhc+\nsnVsrNM+H/9dHsY+4ROMYOwFOZDpLOAxcdibQsI8jXPNmP4Ez+2HAec5m5ytlfVu\nrxDfDdMOzj8w1P5Tsx2VuRGuB1LVODgLjGDDmm7USTgC7ufpaZa1bVIwnftaOXG3\n3a8ELMkh+Nb7StplokH2U8w=\n-----END PRIVATE KEY-----"
+
+
+ORG_ISSUER=https://spid.agid.gov.it/cd
+ORG_URL=https://pagopa.gov.it
+ACS_BASE_URL=http://localhost:${SERVER_PORT}
+ORG_DISPLAY_NAME=Organization display name
+ORG_NAME=Organization name
+
+AUTH_N_CONTEXT=https://www.spid.gov.it/SpidL2
+
+SPID_ATTRIBUTES=address,email,name,familyName,fiscalNumber,mobilePhone
+
+ENDPOINT_ACS=/acs
+ENDPOINT_ERROR=/error
+ENDPOINT_SUCCESS=/success
+ENDPOINT_LOGIN=/login
+ENDPOINT_METADATA=/metadata
+ENDPOINT_LOGOUT=/logout
+
+SPID_VALIDATOR_URL=http://spid-saml-check:${SPID_DEMO_IDP_PORT}/demo
+
+REDIS_URL=redis-cluster
+REDIS_TLS_ENABLED=false
+
+ENABLE_JWT=false
+ENABLE_USER_REGISTRY=false
+USER_REGISTRY_URL=https://localhost
+USER_REGISTRY_API_KEY=afakesecretapimkey
+INCLUDE_SPID_USER_ON_INTROSPECTION=true
+
+TOKEN_EXPIRATION=3600
+JWT_TOKEN_ISSUER=SPID
+JWT_TOKEN_AUDIENCE=https://localhost
+JWT_TOKEN_PRIVATE_KEY=""
+JWT_TOKEN_KID=key-id-for-your-jwt-key
+
+ENABLE_ADE_AA=false
+ADE_AA_API_ENDPOINT=http://ade-aa-ms-mock:3000
+ENDPOINT_L1_SUCCESS="/success/l1"
+L1_TOKEN_EXPIRATION=60
+L1_TOKEN_HEADER_NAME=x-token
+L2_TOKEN_EXPIRATION=3600
+APPINSIGHTS_INSTRUMENTATIONKEY=foo
+REQUIRED_ATTRIBUTES_SERVICE_NAME=Service Name
+
+ENABLE_FULL_OPERATOR_METADATA=true
+COMPANY_EMAIL=company@email.com
+COMPANY_FISCAL_CODE=12312312311
+COMPANY_IPA_CODE=IPA_CODE
+COMPANY_NAME=Company S.r.l
+COMPANY_VAT_NUMBER=12312312311
+
+
+ENABLE_SPID_ACCESS_LOGS=false
+CIE_URL=https://preproduzione.idserver.servizicie.interno.gov.it/idp/shibboleth?Metadata
+NODE_TLS_REJECT_UNAUTHORIZED=0
+NODE_ENV=prod
diff --git a/e2e/scenarios/with-redis-cluster/index.test.ts b/e2e/scenarios/with-redis-cluster/index.test.ts
new file mode 100644
index 00000000..4f69fec4
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/index.test.ts
@@ -0,0 +1,68 @@
+import {
+ delay,
+ bigTime,
+ littleTime,
+ withBrowser,
+ clickAnyway,
+ startupTime
+} from "../../utils/misc";
+import { host, showBrowser, testEntityID, testCredentials } from "./config";
+import fetch from "node-fetch";
+
+const puppeteer = require("puppeteer");
+
+jest.setTimeout(1e6);
+
+beforeAll(async () => {
+ // somehow we need to wait idp metadata are loaded
+ await delay(startupTime);
+});
+describe("Basic with redis cluster", () => {
+ it("should login with an existing user", () =>
+ withBrowser(
+ puppeteer,
+ showBrowser
+ )(async browser => {
+ const page = await browser.newPage();
+
+ /* open login page */ {
+ await page.goto(
+ `${host}/login?entityID=${testEntityID}&authLevel=SpidL2`
+ );
+ await delay(bigTime);
+ }
+
+ /* submit login form with test credentials */ {
+ await page.evaluate(([username, password]: typeof testCredentials) => {
+ // @ts-ignore
+ document.getElementById("username").value = username;
+ // @ts-ignore
+ document.getElementById("password").value = password;
+ }, testCredentials);
+
+ await clickAnyway(page)("form[name='formLogin'] [type='submit']");
+ await delay(littleTime);
+ }
+
+ /* confirm data access (SPID mandatory step) */ {
+ await clickAnyway(page)("form[name='formConfirm'] [type='submit']");
+ await delay(littleTime);
+ }
+
+ /* read landing url and return data to the test */ {
+ await delay(littleTime);
+ const url = await page.url();
+
+ // if login is ok, we landed into success page
+ expect(url).toEqual(expect.stringContaining("/success"));
+ }
+ }));
+ it("healthcheck should return a success", async () => {
+ const result = await fetch(`${host}/healthcheck`)
+ .then(res => res.json())
+ .catch(err => new Error(err));
+
+ expect(result).not.toBeInstanceOf(Error);
+ expect(result).toStrictEqual("OK");
+ });
+});
diff --git a/e2e/scenarios/with-redis-cluster/res/hsl-conf/metadata.xml b/e2e/scenarios/with-redis-cluster/res/hsl-conf/metadata.xml
new file mode 100644
index 00000000..6216f675
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/hsl-conf/metadata.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+jq4Q50MORSjL2nE3dCcpwA+waQwLPF1veXhcVIznJG0=
+
+
+Rosk97QmmhHv33tkg7AZSuXTNr3SsRchCN+GBIzeGY2w4VGrATaUhMy7vNUe5f6xQ3SjUjeaaeY9iVdWt4mdt/jkUaDtjd1LP0o117/77ImLskHGqP56zqybCLc1R2xuDwERR1ERoRm2yLzwpXkOqkS8VzfpvsLsZaiKIiFH6KVHv6ydk/J+dOw86ObG5wXHEczKBH1n++yBdlnReLrA6j/jkB69Wdwqve7xgrzk1FQHMwhq8nSncDWeNjDat9J4bGQ+uVdDqfeVdPD//Xoi/gJs93UMQb5yDgojPS524NFwiaPTSgsPreaN6kcVySky57zPQO3+CWsOraJ8/7vKIQ==
+
+
+MIIDZjCCAk4CCQCVQHwUYXmpaDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJJ VDEOMAwGA1UECAwFU3RhdGUxDTALBgNVBAcMBENpdHkxEzARBgNVBAoMCkFjbWUg SW5jLiAxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGjAYBgNVBAMMEWh1Yi1zcGlk LWxvZ2luLW1zMB4XDTIyMDUxMDEwMTk0M1oXDTIzMDUxMDEwMTk0M1owdTELMAkG A1UEBhMCSVQxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRMwEQYDVQQK DApBY21lIEluYy4gMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRowGAYDVQQDDBFo dWItc3BpZC1sb2dpbi1tczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALNIjtmHt6QdXMSMR16OmOxPRIS/3NEohB18zCQGokNPgujNqhhn7+BderJ2o6zv p89gLxUVi07wa9jFRyY3z5DpS66D9xsDLhH9MtEw5u+rz0dja9L38g4GMCiqtS55 C9HaeqoTlup3oevSo4j8oJaTfkqndNVtogUvtxuXNNMY3Urg4+8YH2jY6XP47Tit pRUcE/G7tud0phkzvbMHYdkd3s2bRYx/bS2PsHwA/9lb+UtQL/y0e/tnKOJLh8LW IGzNlWRTxOzCw6Pidi4gyHAR0JTdU7dIJmE5nczhVPm9reowwKKPrLwGzubNx5CW auSbg4C7Ne2Dlxliav1RgxkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAX+SpxZBn QB5yq2sOFBu0nzmymmhUvO8vKff7sSiHR0Ts3FtgR2kJtr1Aezh6CwaAJsSlkvxJ gIuC1A/y+rPrgn0szj4xHy7tsgO262NcMGIm6Me7WgNsUaJ8Df2wVqzbWLn3lFWn hEdw+/qcrzGh9CZl/nyhGikfAf9WgzhhKUrkL7yfozQfRNOgG5ygpVKUxx4kX+d9 KN56ksZfqFXicqWB/c00Hvz/qiB0k+4C74cEViYUl0YTwDZ5+WTjYqILurIZ1ZJ3 M07xFPVOGwL3yJzOq/NsYCknNWju6LrqDjwj8Y8TBxuTYlEaNH4Q82Z9PJX25ogk xFlTgqLozgQ8FA==
+
+
+
+
+
+
+
+MIIDZjCCAk4CCQCVQHwUYXmpaDANBgkqhkiG9w0BAQsFADB1MQswCQYDVQQGEwJJ VDEOMAwGA1UECAwFU3RhdGUxDTALBgNVBAcMBENpdHkxEzARBgNVBAoMCkFjbWUg SW5jLiAxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGjAYBgNVBAMMEWh1Yi1zcGlk LWxvZ2luLW1zMB4XDTIyMDUxMDEwMTk0M1oXDTIzMDUxMDEwMTk0M1owdTELMAkG A1UEBhMCSVQxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRMwEQYDVQQK DApBY21lIEluYy4gMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRowGAYDVQQDDBFo dWItc3BpZC1sb2dpbi1tczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALNIjtmHt6QdXMSMR16OmOxPRIS/3NEohB18zCQGokNPgujNqhhn7+BderJ2o6zv p89gLxUVi07wa9jFRyY3z5DpS66D9xsDLhH9MtEw5u+rz0dja9L38g4GMCiqtS55 C9HaeqoTlup3oevSo4j8oJaTfkqndNVtogUvtxuXNNMY3Urg4+8YH2jY6XP47Tit pRUcE/G7tud0phkzvbMHYdkd3s2bRYx/bS2PsHwA/9lb+UtQL/y0e/tnKOJLh8LW IGzNlWRTxOzCw6Pidi4gyHAR0JTdU7dIJmE5nczhVPm9reowwKKPrLwGzubNx5CW auSbg4C7Ne2Dlxliav1RgxkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAX+SpxZBn QB5yq2sOFBu0nzmymmhUvO8vKff7sSiHR0Ts3FtgR2kJtr1Aezh6CwaAJsSlkvxJ gIuC1A/y+rPrgn0szj4xHy7tsgO262NcMGIm6Me7WgNsUaJ8Df2wVqzbWLn3lFWn hEdw+/qcrzGh9CZl/nyhGikfAf9WgzhhKUrkL7yfozQfRNOgG5ygpVKUxx4kX+d9 KN56ksZfqFXicqWB/c00Hvz/qiB0k+4C74cEViYUl0YTwDZ5+WTjYqILurIZ1ZJ3 M07xFPVOGwL3yJzOq/NsYCknNWju6LrqDjwj8Y8TBxuTYlEaNH4Q82Z9PJX25ogk xFlTgqLozgQ8FA==
+
+
+
+
+urn:oasis:names:tc:SAML:2.0:nameid-format:transient
+
+
+Service Name
+
+
+
+
+
+
+
+
+
+Organization name
+Organization display name
+https://pagopa.gov.it
+
+
+
+IPA_CODE
+12312312311
+12312312311
+
+
+Company S.r.l
+company@email.com
+
+
\ No newline at end of file
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/.gitignore b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/.gitignore
new file mode 100644
index 00000000..6a91a439
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/.gitignore
@@ -0,0 +1 @@
+*.sqlite
\ No newline at end of file
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/api.json b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/api.json
new file mode 100644
index 00000000..17971333
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/api.json
@@ -0,0 +1,3 @@
+{
+
+}
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/dir.json b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/dir.json
new file mode 100644
index 00000000..f2554e1f
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/dir.json
@@ -0,0 +1,5 @@
+{
+ "DATA": "../data",
+ "TEMP": "temp",
+ "BOOTSTRAP": "bootstrap"
+}
\ No newline at end of file
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/idp.json b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/idp.json
new file mode 100644
index 00000000..eaffa356
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/idp.json
@@ -0,0 +1,27 @@
+{
+ "enabled": true,
+ "basepath": "/",
+ "entityID": "http://spid-saml-check:8088",
+ "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
+ "credentials": [{
+ "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
+ "certificate": "MIIEGDCCAwCgAwIBAgIJAOrYj9oLEJCwMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdDAeFw0xOTA0MTExMDAyMDhaFw0yNTAzMDgxMDAyMDhaMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8kJVo+ugRrbbv9xhXCuVrqi4B7/MQzQc62ocwlFFujJNd4m1mXkUHFbgvwhRkQqo2DAmFeHiwCkJT3K1eeXIFhNFFroEzGPzONyekLpjNvmYIs1CFvirGOj0bkEiGaKEs+/umzGjxIhy5JQlqXE96y1+Izp2QhJimDK0/KNij8I1bzxseP0Ygc4SFveKS+7QO+PrLzWklEWGMs4DM5Zc3VRK7g4LWPWZhKdImC1rnS+/lEmHSvHisdVp/DJtbSrZwSYTRvTTz5IZDSq4kAzrDfpj16h7b3t3nFGc8UoY2Ro4tRZ3ahJ2r3b79yK6C5phY7CAANuW3gDdhVjiBNYs0CAwEAAaOByjCBxzAdBgNVHQ4EFgQU3/7kV2tbdFtphbSA4LH7+w8SkcwwgZcGA1UdIwSBjzCBjIAU3/7kV2tbdFtphbSA4LH7+w8SkcyhaaRnMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdIIJAOrYj9oLEJCwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJNFqXg/V3aimJKUmUaqmQEEoSc3qvXFITvT5f5bKw9yk/NVhR6wndL+z/24h1OdRqs76blgH8k116qWNkkDtt0AlSjQOx5qvFYh1UviOjNdRI4WkYONSw+vuavcx+fB6O5JDHNmMhMySKTnmRqTkyhjrch7zaFIWUSV7hsBuxpqmrWDoLWdXbV3eFH3mINA5AoIY/m0bZtzZ7YNgiFWzxQgekpxd0vcTseMnCcXnsAlctdir0FoCZztxMuZjlBjwLTtM6Ry3/48LMM8Z+lw7NMciKLLTGQyU8XmKKSSOh0dGh5Lrlt5GxIIJkH81C0YimWebz8464QPL3RbLnTKg+c=",
+ "privateKey": "MIIEogIBAAKCAQEAryQlWj66BGttu/3GFcK5WuqLgHv8xDNBzrahzCUUW6Mk13ibWZeRQcVuC/CFGRCqjYMCYV4eLAKQlPcrV55cgWE0UWugTMY/M43J6QumM2+ZgizUIW+KsY6PRuQSIZooSz7+6bMaPEiHLklCWpcT3rLX4jOnZCEmKYMrT8o2KPwjVvPGx4/RiBzhIW94pL7tA74+svNaSURYYyzgMzllzdVEruDgtY9ZmEp0iYLWudL7+USYdK8eKx1Wn8Mm1tKtnBJhNG9NPPkhkNKriQDOsN+mPXqHtve3ecUZzxShjZGji1FndqEnavdvv3IroLmmFjsIAA25beAN2FWOIE1izQIDAQABAoIBAGo9x/bNdDO4IzHViHKs05mGC6eeDr/JxBKsEMvwdj/8YB3hCIO5gKDgLZhKh8KjrIH5RdlgqXbS+3eR1BXrd3v4Ri9Z1TydSbtxOFkI+wHaockofmnl6sE4lEtRkHoXtHeouCN1xOVqra3zPLANUz1VScXqxZDk1ux5qC1XobEL+RfCsyhvq2u0djq0Qcto4sjIimWcl41cIxQc2FQoGeilEs5wOl/2X4sZKz4dLQ6b3PlV+o6doqHnDVu03OAuZJIuS2UYIDC0VPEsyGo3Oq6vTyU2eU2qM9NMFMprdu/dEJcNXoPSJxBb7TjQVg1msJaHH2+xzputB474Baj11QECgYEA3OomifYxbnf/xFMk8Jh3AMTx9QW/r+RQoZFLFER4xvppAT2q1daq7mP3f+5iKAhreGfydY9J2nggSd8yJpLOMPy2leRVZ87cAInzALACCygpHYuhuiN/P83QuWmQ0z6Jh5qYpFRaW5Tjz7XgDazmOeuO4/DNlhPk6gsSOi1DhUECgYEAyvT1ZqDV8vGDpe7DGa89UNnQBYH2BrXiiY4vRevgrpW2vt0cM8KI2mQlKzrcnCYWaW9kSImHfQ1D2YwdoNU4AQHdEz0sGukpZf8XFn1GKJa4B20OiW7YoYS2luwpdU6c9DOnTsWfHs/EHRYpqEEHrbz1hmQZ+4HvA0unEiHHfo0CgYAg1PvdTSWTkWoFt4Wp7D7jcmGzVKNkdL43BOzvmi2JBPZOJOga18iXnWvPK5KS+I1gW7KBHkaPnYLO98jwSqkyRpysMj8vKmMwAVCILaBgIBvcNEBY9aWXyfLXW4UWoBi4epVs9sxnB/3DhPhDkAq3WPbnkYY8Y8CFuBeBZfC/AQKBgFQRBx0NfdF1rHws2+9loNY+gmXloQzChiVIGdiyjYyDQwDoAWiHKbycQrEXXo3nUN03YKiTHuXzeqk/2n3mE56HMRVo/z3eWmF/Ogb8uPTTCUM6Lw1KNr0ghakaBUor1+NnCeQdA331vVv29CZXWWDjpieWixSci24oBfoCt+l5AoGAOE5Q4TjS3u0AxmgPXVDf18CXFweWntSGqNoNNWjOv7GFiu6GqvfLIxZn0sUhVQfNb+xXlQFOdbFf8ix5WvX0dC0uLEhG8tnk1kRT5BTrkedfqF0TdTzxEDd0a6V4yb6oiC4wGkDYcfyFtZ5DE8W+8cRvsxGiAgZaU3g55/CKqMk="
+ }],
+
+ "nameIDFormats": ["urn:oasis:names:tc:SAML:2.0:nameid-format:transient"],
+ "signAllRequests": false,
+ "signAllResponses": true,
+ "requireSignedRequests": true,
+ "requireSignedResponses": false,
+
+ "agidloginAuthentication": false,
+ "agidloginClientID": "",
+ "agidloginClientSecret": "",
+ "agidloginRedirectURI": "",
+ "agidloginPostLogoutRedirectURI": "",
+
+ "localloginUser": "validator",
+ "localloginPasswordHash": "f82af32160bc53112ca118abbf57fa6fed47eb90291a1d1d92f438ae2ed74ef6",
+ "autoLogin": false
+}
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/idp_demo.json b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/idp_demo.json
new file mode 100644
index 00000000..89d94d4c
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/idp_demo.json
@@ -0,0 +1,25 @@
+{
+ "enabled": true,
+ "basepath": "/demo",
+ "entityID": "http://spid-saml-check:8088/demo",
+ "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
+ "credentials": [
+ {
+ "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
+ "certificate": "MIIEGDCCAwCgAwIBAgIJAOrYj9oLEJCwMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdDAeFw0xOTA0MTExMDAyMDhaFw0yNTAzMDgxMDAyMDhaMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK8kJVo+ugRrbbv9xhXCuVrqi4B7/MQzQc62ocwlFFujJNd4m1mXkUHFbgvwhRkQqo2DAmFeHiwCkJT3K1eeXIFhNFFroEzGPzONyekLpjNvmYIs1CFvirGOj0bkEiGaKEs+/umzGjxIhy5JQlqXE96y1+Izp2QhJimDK0/KNij8I1bzxseP0Ygc4SFveKS+7QO+PrLzWklEWGMs4DM5Zc3VRK7g4LWPWZhKdImC1rnS+/lEmHSvHisdVp/DJtbSrZwSYTRvTTz5IZDSq4kAzrDfpj16h7b3t3nFGc8UoY2Ro4tRZ3ahJ2r3b79yK6C5phY7CAANuW3gDdhVjiBNYs0CAwEAAaOByjCBxzAdBgNVHQ4EFgQU3/7kV2tbdFtphbSA4LH7+w8SkcwwgZcGA1UdIwSBjzCBjIAU3/7kV2tbdFtphbSA4LH7+w8SkcyhaaRnMGUxCzAJBgNVBAYTAklUMQ4wDAYDVQQIEwVJdGFseTENMAsGA1UEBxMEUm9tZTENMAsGA1UEChMEQWdJRDESMBAGA1UECxMJQWdJRCBURVNUMRQwEgYDVQQDEwthZ2lkLmdvdi5pdIIJAOrYj9oLEJCwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJNFqXg/V3aimJKUmUaqmQEEoSc3qvXFITvT5f5bKw9yk/NVhR6wndL+z/24h1OdRqs76blgH8k116qWNkkDtt0AlSjQOx5qvFYh1UviOjNdRI4WkYONSw+vuavcx+fB6O5JDHNmMhMySKTnmRqTkyhjrch7zaFIWUSV7hsBuxpqmrWDoLWdXbV3eFH3mINA5AoIY/m0bZtzZ7YNgiFWzxQgekpxd0vcTseMnCcXnsAlctdir0FoCZztxMuZjlBjwLTtM6Ry3/48LMM8Z+lw7NMciKLLTGQyU8XmKKSSOh0dGh5Lrlt5GxIIJkH81C0YimWebz8464QPL3RbLnTKg+c=",
+ "privateKey": "MIIEogIBAAKCAQEAryQlWj66BGttu/3GFcK5WuqLgHv8xDNBzrahzCUUW6Mk13ibWZeRQcVuC/CFGRCqjYMCYV4eLAKQlPcrV55cgWE0UWugTMY/M43J6QumM2+ZgizUIW+KsY6PRuQSIZooSz7+6bMaPEiHLklCWpcT3rLX4jOnZCEmKYMrT8o2KPwjVvPGx4/RiBzhIW94pL7tA74+svNaSURYYyzgMzllzdVEruDgtY9ZmEp0iYLWudL7+USYdK8eKx1Wn8Mm1tKtnBJhNG9NPPkhkNKriQDOsN+mPXqHtve3ecUZzxShjZGji1FndqEnavdvv3IroLmmFjsIAA25beAN2FWOIE1izQIDAQABAoIBAGo9x/bNdDO4IzHViHKs05mGC6eeDr/JxBKsEMvwdj/8YB3hCIO5gKDgLZhKh8KjrIH5RdlgqXbS+3eR1BXrd3v4Ri9Z1TydSbtxOFkI+wHaockofmnl6sE4lEtRkHoXtHeouCN1xOVqra3zPLANUz1VScXqxZDk1ux5qC1XobEL+RfCsyhvq2u0djq0Qcto4sjIimWcl41cIxQc2FQoGeilEs5wOl/2X4sZKz4dLQ6b3PlV+o6doqHnDVu03OAuZJIuS2UYIDC0VPEsyGo3Oq6vTyU2eU2qM9NMFMprdu/dEJcNXoPSJxBb7TjQVg1msJaHH2+xzputB474Baj11QECgYEA3OomifYxbnf/xFMk8Jh3AMTx9QW/r+RQoZFLFER4xvppAT2q1daq7mP3f+5iKAhreGfydY9J2nggSd8yJpLOMPy2leRVZ87cAInzALACCygpHYuhuiN/P83QuWmQ0z6Jh5qYpFRaW5Tjz7XgDazmOeuO4/DNlhPk6gsSOi1DhUECgYEAyvT1ZqDV8vGDpe7DGa89UNnQBYH2BrXiiY4vRevgrpW2vt0cM8KI2mQlKzrcnCYWaW9kSImHfQ1D2YwdoNU4AQHdEz0sGukpZf8XFn1GKJa4B20OiW7YoYS2luwpdU6c9DOnTsWfHs/EHRYpqEEHrbz1hmQZ+4HvA0unEiHHfo0CgYAg1PvdTSWTkWoFt4Wp7D7jcmGzVKNkdL43BOzvmi2JBPZOJOga18iXnWvPK5KS+I1gW7KBHkaPnYLO98jwSqkyRpysMj8vKmMwAVCILaBgIBvcNEBY9aWXyfLXW4UWoBi4epVs9sxnB/3DhPhDkAq3WPbnkYY8Y8CFuBeBZfC/AQKBgFQRBx0NfdF1rHws2+9loNY+gmXloQzChiVIGdiyjYyDQwDoAWiHKbycQrEXXo3nUN03YKiTHuXzeqk/2n3mE56HMRVo/z3eWmF/Ogb8uPTTCUM6Lw1KNr0ghakaBUor1+NnCeQdA331vVv29CZXWWDjpieWixSci24oBfoCt+l5AoGAOE5Q4TjS3u0AxmgPXVDf18CXFweWntSGqNoNNWjOv7GFiu6GqvfLIxZn0sUhVQfNb+xXlQFOdbFf8ix5WvX0dC0uLEhG8tnk1kRT5BTrkedfqF0TdTzxEDd0a6V4yb6oiC4wGkDYcfyFtZ5DE8W+8cRvsxGiAgZaU3g55/CKqMk="
+ }
+ ],
+ "nameIDFormats": [
+ "urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
+ ],
+ "signAllRequests": false,
+ "signAllResponses": true,
+ "requireSignedRequests": true,
+ "requireSignedResponses": false,
+ "checkStrict": false,
+ "checkCerts": true,
+ "checkExtra": false,
+ "maxRetry": 3,
+ "loginTimeout": 60000
+}
\ No newline at end of file
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/server.json b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/server.json
new file mode 100644
index 00000000..aaa0e268
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/server.json
@@ -0,0 +1,6 @@
+{
+ "host": "http://localhost:8088",
+ "port": 8088,
+ "useProxy": true,
+ "useHttps": false
+}
\ No newline at end of file
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/spid_users.json b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/spid_users.json
new file mode 100644
index 00000000..c6a160b6
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/spid_users.json
@@ -0,0 +1,582 @@
+[
+ {
+ "username": "cesare",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-001",
+ "name": "Gaio Giulio",
+ "familyName": "Cesare",
+ "gender": "M",
+ "dateOfBirth": "1944-07-13",
+ "countyOfBirth": "RM",
+ "placeOfBirth": "H501",
+ "idCard": "cartaIdentita AC137100 comuneRoma 2007-12-22 2018-07-13",
+ "expirationDate": "2019-04-11",
+ "fiscalNumber": "TINIT-CSRGGL44L13H501E",
+ "mobilePhone": "3331234567",
+ "email": "gaiogiuliocesare@gmail.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "ada",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-002",
+ "familyName": "Lovelace",
+ "name": "Ada",
+ "gender": "F",
+ "dateOfBirth": "1985-12-10",
+ "countyOfBirth": "PI",
+ "placeOfBirth": "G702",
+ "idCard": "passaporto KK1234567 questuraLivorno 2016-09-04 2026-09-03",
+ "expirationDate": "2018-02-02",
+ "fiscalNumber": "TINIT-LVLDAA85T50G702B",
+ "mobilePhone": "3939393939",
+ "email": "aabyron@hotmail.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "garibaldi",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-003",
+ "familyName": "Garibaldi",
+ "name": "Giuseppe Maria",
+ "gender": "M",
+ "dateOfBirth": "1987-07-04",
+ "countyOfBirth": "CE",
+ "placeOfBirth": "L741",
+ "idCard": "patenteGuida U1U111111U motorizzazioneCaserta 2013-04-03 2023-07-04",
+ "expirationDate": "2019-03-13",
+ "fiscalNumber": "TINIT-GRBGPP87L04L741X",
+ "mobilePhone": "3310001000",
+ "email": "eroedei2mondi@yahoo.it",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "lucrezia",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-004",
+ "familyName": "Borgia",
+ "name": "Lucrezia",
+ "gender": "F",
+ "dateOfBirth": "1980-04-18",
+ "countyOfBirth": "RM",
+ "placeOfBirth": "H501",
+ "idCard": "cartaIdentita AK987654 comuneFerrara 2012-11-28 2023-04-18",
+ "expirationDate": "2019-01-01",
+ "fiscalNumber": "TINIT-BRGLRZ80D58H501Q",
+ "mobilePhone": "3495555555",
+ "email": "luborgia@msn.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "cristoforocolombo",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-005",
+ "familyName": "Colombo",
+ "name": "Cristoforo",
+ "gender": "M",
+ "dateOfBirth": "1942-10-12",
+ "countyOfBirth": "GE",
+ "placeOfBirth": "D969",
+ "idCard": "patenteNautica 102579 capitaneriaPortoGenova 2014-08-05 2024-10-12",
+ "expirationDate": "2018-09-15",
+ "fiscalNumber": "TINIT-CLMCST42R12D969Z",
+ "mobilePhone": "3893893893",
+ "email": "laninalapintaelasantamaria@outlook.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "lapulzella",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-006",
+ "familyName": "D'Arco",
+ "name": "Giovanna",
+ "gender": "F",
+ "dateOfBirth": "1912-01-06",
+ "countyOfBirth": "AO",
+ "placeOfBirth": "A326",
+ "idCard": "cartaIdentita AA121212 comuneAosta 2010-01-13 2020-01-06",
+ "expirationDate": "2019-06-04",
+ "fiscalNumber": "TINIT-DRCGNN12A46A326K",
+ "mobilePhone": "3466433463",
+ "email": "laPulzelladOrleans@yahoo.fr",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "fieramosca",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-007",
+ "familyName": "Fieramosca",
+ "name": "Ettore",
+ "gender": "M",
+ "dateOfBirth": "1976-08-06",
+ "countyOfBirth": "CE",
+ "placeOfBirth": "B715",
+ "idCard": "patente Z1Z111111Z motorizzazioneBarletta 2017-03-09 2027-08-06",
+ "expirationDate": "2019-08-01",
+ "fiscalNumber": "TINIT-FRMTTR76M06B715E",
+ "mobilePhone": "3323323323",
+ "email": "trediciitalianicontrotredicifrancesi@hotmail.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "cleopatra",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-008",
+ "familyName": "Filopatore",
+ "name": "Cleopatra Tea",
+ "gender": "F",
+ "dateOfBirth": "1969-01-25",
+ "countyOfBirth": "EE",
+ "placeOfBirth": "Z336",
+ "idCard": "passaporto SH555555 ambasciataEgitto 2015-05-25 2025-01-25",
+ "expirationDate": "2019-05-21",
+ "fiscalNumber": "TINIT-FLPCPT69A65Z336P",
+ "mobilePhone": "3805555555",
+ "email": "ilcobranoneunserpente@gmail.it",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "marcopolo",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-009",
+ "familyName": "Polo",
+ "name": "Marco",
+ "gender": "M",
+ "dateOfBirth": "2001-09-30",
+ "countyOfBirth": "VE",
+ "placeOfBirth": "L736",
+ "idCard": "cartaIdentita AZ765432 comuneVenezia 2015-03-12 2025-09-30",
+ "expirationDate": "2019-10-01",
+ "fiscalNumber": "TINIT-PLOMRC01P30L736Y",
+ "mobilePhone": "3320606060",
+ "email": "ilmilione@virgilio.it",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "lucia.mondella",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-010",
+ "familyName": "Mondella",
+ "name": "Lucia",
+ "gender": "F",
+ "dateOfBirth": "1998-12-28",
+ "countyOfBirth": "CO",
+ "placeOfBirth": "C933",
+ "idCard": "cartaIdentita AU888888 comuneComo 2014-02-07 2024-12-28",
+ "expirationDate": "2019-05-05",
+ "fiscalNumber": "TINIT-MNDLCU98T68C933T",
+ "mobilePhone": "3477433473",
+ "email": "quelbracciodellagodicomo@hotmail.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "innominato",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-011",
+ "familyName": "Manzoni",
+ "name": "Alessandro",
+ "gender": "M",
+ "dateOfBirth": "1999-05-05",
+ "countyOfBirth": "MI",
+ "placeOfBirth": "F205",
+ "idCard": "passaporto TT232323 questuraMilano 2017-10-01 2027-10-01",
+ "expirationDate": "2019-09-01",
+ "fiscalNumber": "TINIT-MNZLSN99E05F205J",
+ "mobilePhone": "3939999999",
+ "email": "innominato@hotmail.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "agid",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-012",
+ "familyName": "",
+ "name": "",
+ "gender": "",
+ "dateOfBirth": "",
+ "countyOfBirth": "",
+ "placeOfBirth": "",
+ "idCard": "",
+ "expirationDate": "2040-06-05",
+ "fiscalNumber": "",
+ "mobilePhone": "",
+ "email": "protocollo@pec.agid.gov.it",
+ "digitalAddress": "protocollo@pec.agid.gov.it",
+ "ivaCode": "97735020584",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "companyFiscalNumber": "TINIT-97735020584",
+ "address": "",
+ "domicileStreetAddress": "",
+ "domicilePostalCode": "",
+ "domicileMunicipality": "",
+ "domicileProvince": "",
+ "domicileNation": ""
+ },
+ {
+ "username": "Louis",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-013",
+ "familyName": "Armstrong",
+ "name": "Louis",
+ "gender": "M",
+ "dateOfBirth": "1931-08-04",
+ "countyOfBirth": "EE",
+ "placeOfBirth": "Z404",
+ "idCard": "librettoPensione KK121212 inps 2008-07-03 2018-07-03",
+ "expirationDate": "2019-11-19",
+ "fiscalNumber": "TINIT-RMSLSO31M04Z404R",
+ "mobilePhone": "3334567890",
+ "email": "SatchmoTrumpet@gmail.com",
+ "digitalAddress": "SatchmoTrumpet@postacertificatatrumpet.it",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "montessori",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-014",
+ "familyName": "Montessori",
+ "name": "Maria",
+ "gender": "F",
+ "dateOfBirth": "2003-08-31",
+ "countyOfBirth": "AN",
+ "placeOfBirth": "C615",
+ "idCard": "cartaIdentita ZZ246810 comuneAncona 2017-09-06 2027-08-31",
+ "expirationDate": "2019-09-09",
+ "fiscalNumber": "TINIT-MNTMRA03M71C615V",
+ "mobilePhone": "3469999999",
+ "email": "farelecoseconmetodo@alice.it",
+ "digitalAddress": "montessori@pec.agid.gov.it",
+ "ivaCode": "12345678987",
+ "companyName": "Scuola magistrale Montessori",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "companyFiscalNumber": "TINIT-12345678987",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "little",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-015",
+ "familyName": "Little",
+ "name": "Stuart",
+ "gender": "M",
+ "dateOfBirth": "2016-12-12",
+ "countyOfBirth": "RM",
+ "placeOfBirth": "H501",
+ "idCard": "cartaIdentita AC137100 comuneRoma 2020-05-22 2023-05-22",
+ "expirationDate": "2022-05-22",
+ "fiscalNumber": "TINIT-LTTSRT16T12H501Y",
+ "mobilePhone": "300000000",
+ "email": "topolinoingamba@gmail.com",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via Listz 21 00144 Roma",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "dino",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-016",
+ "familyName": "De Sauro",
+ "name": "Dino",
+ "gender": "M",
+ "dateOfBirth": "0000-00-00",
+ "countyOfBirth": "BA",
+ "placeOfBirth": "A225",
+ "idCard": "cartaIdentita JUR4SS1C comuneAltamura 0000-00-00 0000-00-00",
+ "expirationDate": "0001-00-00",
+ "fiscalNumber": "TINIT-DSRDNI00A01A225I",
+ "mobilePhone": "000000000",
+ "email": "noreply@estinti.paleo",
+ "digitalAddress": "",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "",
+ "domicileStreetAddress": "",
+ "domicilePostalCode": "",
+ "domicileMunicipality": "",
+ "domicileProvince": "",
+ "domicileNation": ""
+ },
+ {
+ "username": "galileo",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-017",
+ "familyName": "Galilei",
+ "name": "Galileo",
+ "gender": "M",
+ "dateOfBirth": "1964-02-15",
+ "countyOfBirth": "PI",
+ "placeOfBirth": "G702",
+ "idCard": "cartaIdentita PI150264 comunePisa 2003-07-11 2023-07-11",
+ "expirationDate": "2064-02-15",
+ "fiscalNumber": "TINIT-GLLGLL64B15G702I",
+ "mobilePhone": "3479999999",
+ "email": "ilcannocchiale@libero.it",
+ "digitalAddress": "ilcannocchiale@pec.agid.gov.it",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Via delle scienze 1 56121 Pisa",
+ "domicileStreetAddress": "Via delle scienze 1",
+ "domicilePostalCode": "56121",
+ "domicileMunicipality": "Pisa",
+ "domicileProvince": "PI",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "leonardo",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-018",
+ "familyName": "Da Vinci",
+ "name": "Leonardo",
+ "gender": "M",
+ "dateOfBirth": "1952-04-15",
+ "countyOfBirth": "FI",
+ "placeOfBirth": "M059",
+ "idCard": "cartaIdentita FI150452 comuneVinci 2000-04-15 2023-04-15",
+ "expirationDate": "2032-04-15",
+ "fiscalNumber": "TINIT-DVNLRD52D15M059P",
+ "mobilePhone": "3479999999",
+ "email": "ilvitruviano@libero.it",
+ "digitalAddress": "ilvitruviano@pec.agid.gov.it",
+ "ivaCode": "13747520544",
+ "companyName": "Bottega Verrocchio",
+ "registeredOffice": "Via della Bottega 50100 Firenze",
+ "companyFiscalNumber": "TINIT-13747520544",
+ "address": "Via della Bottega 50100 Firenze",
+ "domicileStreetAddress": "Via della Bottega",
+ "domicilePostalCode": "50100",
+ "domicileMunicipality": "Firenze",
+ "domicileProvince": "FI",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "michelangelo",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-018",
+ "familyName": "Buonarroti",
+ "name": "Michelangelo",
+ "gender": "M",
+ "dateOfBirth": "1975-03-06",
+ "countyOfBirth": "PI",
+ "placeOfBirth": "G702",
+ "idCard": "cartaIdentita RM060375 comuneCapreseMichelangelo 2000-03-06 2025-03-06",
+ "expirationDate": "2032-03-06",
+ "fiscalNumber": "TINIT-GLLGLL64B15G702I",
+ "mobilePhone": "3491234567",
+ "email": "david@operaduomo.it",
+ "digitalAddress": "david@pec.agid.gov.it",
+ "ivaCode": "",
+ "companyName": "",
+ "registeredOffice": "",
+ "companyFiscalNumber": "",
+ "address": "Piazza della Signoria 50100 Firenze",
+ "domicileStreetAddress": "Piazza della Signoria",
+ "domicilePostalCode": "50100",
+ "domicileMunicipality": "Firenze",
+ "domicileProvince": "FI",
+ "domicileNation": "IT"
+ },
+ {
+ "username": "matteo",
+ "password": "password123",
+ "spidLevel": 2,
+
+ "spidCode": "SPID-019",
+ "familyName": "Matteo",
+ "name": "Rossi",
+ "gender": "M",
+ "dateOfBirth": "09/09/2009",
+ "countyOfBirth": "BO",
+ "placeOfBirth": "G702",
+ "idCard": "",
+ "expirationDate": "2040-06-05",
+ "fiscalNumber": "",
+ "mobilePhone": "",
+ "email": "prova@example.com",
+ "digitalAddress": "prova@example.com",
+ "ivaCode": "97735020584",
+ "companyName": "none",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "companyFiscalNumber": "TINIT-EEEEEE00E00E000A",
+ "address": "",
+ "domicileStreetAddress": "",
+ "domicilePostalCode": "",
+ "domicileMunicipality": "",
+ "domicileProvince": "",
+ "domicileNation": ""
+ }
+]
diff --git a/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/test.json b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/test.json
new file mode 100644
index 00000000..dff6b2af
--- /dev/null
+++ b/e2e/scenarios/with-redis-cluster/res/spidsamlcheck-conf/test.json
@@ -0,0 +1,3672 @@
+{
+ "test-suite-1": {
+ "description": "Test Response",
+ "response": {
+ "AssertionConsumerURL": "",
+ "ResponseID": "",
+ "AuthnRequestID": ""
+ },
+ "cases": {
+ "1": {
+ "name": "01. Response corretta",
+ "description": "Response corretta. Risultato atteso: Ok",
+ "path": "test/base.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "1-nosession": {
+ "name": "01. Response corretta (AuthnContextClassRef > SpidL1)",
+ "description": "Response corretta. Risultato atteso: Ok",
+ "path": "test/base-nosession.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "2": {
+ "name": "02. Response non firmata",
+ "description": "Response non firmata. Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": false,
+ "sign_assertion": false
+ },
+ "3": {
+ "name": "03. Response - Assertion non firmata",
+ "description": "Response firmata, Assertion non firmata. (L'assertion deve essere sempre firmata, la response può essere firmata). Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ },
+ "4": {
+ "name": "04. Response - Firma non valida",
+ "description": "Response firmata con certificato diverso da quello registrato su SP. Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true,
+ "sign_credentials": {
+ "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
+ "certificate": "MIIDljCCAn6gAwIBAgIJAMSLv+GOwGWAMA0GCSqGSIb3DQEBCwUAMGAxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTENMAsGA1UEBwwEUm9tZTENMAsGA1UECgwEQWdJRDENMAsGA1UECwwEQWdJRDEUMBIGA1UEAwwLYWdpZC5nb3YuaXQwHhcNMTkwNDA4MTc1MTMwWhcNMjAwNDA3MTc1MTMwWjBgMQswCQYDVQQGEwJJVDEOMAwGA1UECAwFSXRhbHkxDTALBgNVBAcMBFJvbWUxDTALBgNVBAoMBEFnSUQxDTALBgNVBAsMBEFnSUQxFDASBgNVBAMMC2FnaWQuZ292Lml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsswE3L6ZbMWALv5fw73NmdZB5es3QaLNd3hq8sVVndDZUnM7yMHkYwPmlh1rFj82jPr2L9nasi32v6i283dsGCUxRH3VQo2Fi4awqvzx9g3mnd2p+CJKqN/xQuFyXkmDy7wKIopkv9EKJSFyyn9Y2h5FiKYucQoqQ2KJItt2y6tcTbhBRa7fMx99UPt1y5np31+oR4/BYWqLBtApMfGaXXDRNw/DBzmeew/uwC7tARMMG51MRBCZ83Mr5fIGeQZaYmDNCi+mIultLCVAZLqlv5h8p9bTAHNkNRpCh/V/I+q/L7Ajxfe/HEbydhJRyUjA0pmC4pAfvMlyDtQXMhh3FQIDAQABo1MwUTAdBgNVHQ4EFgQUodPRXj6pRrDfV011IiDnEOqnoMEwHwYDVR0jBBgwFoAUodPRXj6pRrDfV011IiDnEOqnoMEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEABkraIDMLDmpATNjR0uIu01gUOfIJMLWi75Ec03JGE/ljj2Kap7FO/RgqT5pmIUorb65rPlwsiP6Bv5Q7crDQMzVJdZwPzbboGlZR/dcqmQThgY4aOp7xcrmUCm3tWgwP52nw3QpLdVoiufy+5+MSuig6dklRqvx0tLGWgG2daUbdRtpEl8KtERMbVjoZGUqQE+WpIoKqxz2R84YY024XlMhRvxRAabFpYCNg5fAw0kRRXj3Zxmg7AdLzMStXHA/bked4ZoX6uJ19qLTOCLhlufQu8m3FL5Go5VL+qDdrNg7XYLxT1I5h1wtfebCA/e1IzHZmcUcAGVex4HgaAQwTNA==",
+ "privateKey": "MIIEpAIBAAKCAQEAsswE3L6ZbMWALv5fw73NmdZB5es3QaLNd3hq8sVVndDZUnM7yMHkYwPmlh1rFj82jPr2L9nasi32v6i283dsGCUxRH3VQo2Fi4awqvzx9g3mnd2p+CJKqN/xQuFyXkmDy7wKIopkv9EKJSFyyn9Y2h5FiKYucQoqQ2KJItt2y6tcTbhBRa7fMx99UPt1y5np31+oR4/BYWqLBtApMfGaXXDRNw/DBzmeew/uwC7tARMMG51MRBCZ83Mr5fIGeQZaYmDNCi+mIultLCVAZLqlv5h8p9bTAHNkNRpCh/V/I+q/L7Ajxfe/HEbydhJRyUjA0pmC4pAfvMlyDtQXMhh3FQIDAQABAoIBACi5PVZF904GAfcyKv+7aGvkmCfVFkXV3fSbMcjP13tViVo1MuW7+9ftmISSeMSda0BbHN2zQhOZUn0+4US865roRbty6bL55vPrnqujZz0C14cXaNJChTzHnPz9un3tQp6R2sEZQm9KHoRshOfIb6VmhbHlH+jRRuUIOXH+CKXEpTPDU4Th+fdoYEOQY7NFHoobPrQ8IegYgODrWX2pTYf9AA5RitBP0Ju4lePgJX000T7WRpkSkAgi6arWzHzf5YUyAIATIVvm0RkuLIn9Q6YDQJa3lEmhEub4LZA6EpnqJYEjmfcOp5rPEKtq8tPWyuKvlT6bzHdtXz5zSG5Bo9UCgYEA6T8UAgcgRRJDYhKhsuhzwk3qahi0XqBJJp+XO8fdQXEh783P6pv5uYR1QUdDtgFOP05NEGz0Mzkyx5qxqlOr0yXlj0Tajb64S+5jyo8dqB2zxj0M8NLCxbQMvFN88tAHCJMPZeKOyq83XgWff2GzXqbQ9yh+5jauejW7z7zDEjsCgYEAxD0pLEFuBPeS1Fzz0P2UmsvKDbViqd9BlVwNwOR3YtSzT5hihUt1qVK22EVqlSWzF+QmAK76FQMoXiiQ22fNxTcaviNj2qZ9xhadS6RuF2MbxXVVQzXY4Oie/+mZg37fP0JZCQdlwOYp4UN4ZDf7NWJC5WJph4kx9Hj1liJGNu8CgYEAiOhhkh8kreZebv6Isz8GU5LweX4uwSxMQ8OBPbG/CV6ikOO5mvgayO4a9UojUH3LtBT93xpU7IwyZj9C8btTLAkeic3ciz7bZpZzNL50pe1pTH8hTWoosWtR3mkS+mNo/Xt0mlU1g3r9gM7EJDzw0CoSlkDK285U857+sp0V02kCgYBpCnPnhH5nmj21/qtjytioozzcaaMOWrq4QDX8ck6VUFVK3b6equ2oXOYSjdWnUC61MyJEa2ThqncJL52aU84JKp3d+QOSHlxkk+ZOfw2O5zYOU+f3ufMFMH8rbNcHU/ob2l/ePV9yCcGRGpRu0KhewuIb9rmWGxHqUnTikCYVcQKBgQDUWuS6hNq5qUSCIGL5e8CMmc/wSAvQFgxZV4VgJdPexykaJc4LKoFYqbRSyOSJ2vpxxWa6qIPU0+kgNZT7lBf8JOd4MIg5sg6Q8hIQk/I6cTM3F3ehpsKoq9K7IcJQQWqHgkONEFeghIZH0nzhnwrtVuFZiCzc7c671MmJMhnPZQ=="
+ }
+ },
+ "8": {
+ "name": "08. Response - ID non specificato",
+ "description": "Attributo ID non specificato. Risultato atteso: KO",
+ "path": "test/case-08.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "9": {
+ "name": "09. Response - ID mancante",
+ "description": "Attributo ID mancante. Risultato atteso: KO",
+ "path": "test/case-09.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "10": {
+ "name": "10. Response - Version diverso da 2.0",
+ "description": "Attributo Version diverso da 2.0. Risultato atteso: KO",
+ "path": "test/case-10.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "11": {
+ "name": "11. Response - IssueInstant non specificato",
+ "description": "Attributo IssueInstant non specificato. Risultato atteso: KO",
+ "path": "test/case-11.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "12": {
+ "name": "12. Response - IssueInstant mancante",
+ "description": "Attributo IssueInstant mancante. Risultato atteso: KO",
+ "path": "test/case-12.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "13": {
+ "name": "13. Response - Formato IssueInstant non corretto",
+ "description": "Attributo IssueInstant avente formato non corretto. Risultato atteso: KO",
+ "path": "test/case-13.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "14": {
+ "name": "14. Response - IssueInstant precedente Request",
+ "description": "Attributo IssueInstant precedente a IssueInstant della request. Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "IssueInstant": "2018-01-01T00:00:00Z",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "15": {
+ "name": "15. Response - IssueInstant successivo Request",
+ "description": "Attributo IssueInstant successivo all'istante di ricezione. Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "IssueInstant": "2099-01-01T00:00:00Z",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "16": {
+ "name": "16. Response - InResponseTo non specificato",
+ "description": "Attributo InResponseTo non specificato. Risultato atteso: KO",
+ "path": "test/case-16.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "17": {
+ "name": "17. Response - InResponseTo mancante",
+ "description": "Attributo InResponseTo mancante. Risultato atteso: KO",
+ "path": "test/case-17.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "18": {
+ "name": "18. Response - InResponseTo diverso da Request",
+ "description": "Attributo InResponseTo diverso da ID request. Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "AuthnRequestID": "inresponsetodiversodaidrequest",
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "19": {
+ "name": "19. Response - Destination non specificato",
+ "description": "Attributo Destination non specificato. Risultato atteso: KO",
+ "path": "test/case-19.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "20": {
+ "name": "20. Response - Destination mancante",
+ "description": "Attributo Destination mancante. Risultato atteso: KO",
+ "path": "test/case-20.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "21": {
+ "name": "21. Response - Destination diverso da AssertionConsumerServiceURL",
+ "description": "Attributo Destination diverso da AssertionConsumerServiceURL. Risultato atteso: KO",
+ "path": "test/case-21.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "22": {
+ "name": "22. Response - Elemento Status non specificato",
+ "description": "Elemento Status non specificato. Risultato atteso: KO",
+ "path": "test/case-22.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "23": {
+ "name": "23. Response - Elemento Status mancante",
+ "description": "Elemento Status mancante. Risultato atteso: KO",
+ "path": "test/case-23.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "24": {
+ "name": "24. Response - Elemento StatusCode non specificato",
+ "description": "Elemento StatusCode non specificato. Risultato atteso: KO",
+ "path": "test/case-24.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "25": {
+ "name": "25. Response - Elemento StatusCode mancante",
+ "description": "Elemento StatusCode mancante. Risultato atteso: KO",
+ "path": "test/case-25.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "26": {
+ "name": "26. Response - Elemento StatusCode diverso da success (non valido)",
+ "description": "Elemento StatusCode diverso da Success (non valido). Risultato atteso: KO. il S.P. deve mostrare schermata di errore",
+ "path": "test/case-26.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "27": {
+ "name": "27. Response - Elemento Issuer non specificato",
+ "description": "Elemento Issuer non specificato. Risultato atteso: KO",
+ "path": "test/case-27.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "28": {
+ "name": "28. Response - Elemento Issuer mancante",
+ "description": "Elemento Issuer mancante. Risultato atteso: KO",
+ "path": "test/case-28.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": false,
+ "sign_assertion": true
+ },
+ "29": {
+ "name": "29. Response - Elemento Issuer diverso da EntityID IdP",
+ "description": "Elemento Issuer diverso da EntityID IdP. Risultato atteso: KO",
+ "path": "test/case-29.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "30": {
+ "name": "30. Response - Attributo Format di Issuer diverso",
+ "description": "L'attributo Format di Issuer deve essere omesso o assumere valore urn:oasis:names:tc:SAML:2.0:nameid-format:entity. In questo test il valore è diverso. Risultato atteso: KO",
+ "path": "test/case-30.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "31": {
+ "name": "31. Response - Attributo Format di Issuer omesso",
+ "description": "L'attributo Format di Issuer deve essere omesso o assumere valore urn:oasis:names:tc:SAML:2.0:nameid-format:entity. In questo test il valore è omesso. Risultato atteso: OK",
+ "path": "test/case-31.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "32": {
+ "name": "32. Response - Elemento Assertion mancante",
+ "description": "Elemento Assertion mancante ed esito positivo autenticazione. Risultato atteso: KO",
+ "path": "test/case-32.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ },
+ "33": {
+ "name": "33. Assertion - Attributo ID non specificato",
+ "description": "Attributo ID dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-33.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "34": {
+ "name": "34. Assertion - Attributo ID mancante",
+ "description": "Attributo ID dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-34.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "35": {
+ "name": "35. Assertion - Attributo Version diverso da 2.0",
+ "description": "Attributo Version dell'Assertion diverso da 2.0. Risultato atteso: KO",
+ "path": "test/case-35.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "36": {
+ "name": "36. Assertion - Attributo IssueInstant non specificato",
+ "description": "Attributo IssueInstant dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-36.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "37": {
+ "name": "37. Assertion - Attributo IssueInstant mancante",
+ "description": "Attributo IssueInstant dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-37.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "38": {
+ "name": "38. Assertion - Attributo IssueInstant avente formato non corretto",
+ "description": "Attributo IssueInstant dell'Assertion avente formato non corretto. Risultato atteso: KO",
+ "path": "test/case-38.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "39": {
+ "name": "39. Assertion - Attributo IssueInstant precedente a IssueInstant della Request",
+ "description": "Attributo IssueInstant dell'Assertion precedente a IssueInstant della Request. Risultato atteso: KO",
+ "path": "test/case-39.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "40": {
+ "name": "40. Assertion - Attributo IssueInstant successivo a IssueInstant della Request",
+ "description": "Attributo IssueInstant dell'Assertion successivo a IssueInstant della Request. Risultato atteso: KO",
+ "path": "test/case-40.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "41": {
+ "name": "41. Assertion - Elemento Subject non specificato",
+ "description": "Elemento Subject dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-41.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "42": {
+ "name": "42. Assertion - Elemento Subject mancante",
+ "description": "Elemento Subject dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-42.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "43": {
+ "name": "43. Assertion - Elemento NameID non specificato",
+ "description": "Elemento NameID dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-43.xml",
+ "response": {
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "44": {
+ "name": "44. Assertion - Elemento NameID mancante",
+ "description": "Elemento NameID dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-44.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "45": {
+ "name": "45. Assertion - Attributo Format di NameID non specificato",
+ "description": "Attributo Format dell'elemento NameID dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-45.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "46": {
+ "name": "46. Assertion - Attributo Format di NameID mancante",
+ "description": "Attributo Format dell'elemento NameID dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-46.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "47": {
+ "name": "47. Assertion - Attributo Format di NameID diverso",
+ "description": "Attributo Format di NameID dell'Assertion diverso da urn:oasis:names:tc:SAML:2.0:nameidformat:transient. Risultato atteso: KO",
+ "path": "test/case-47.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "48": {
+ "name": "48. Assertion - Attributo NameQualifier di NameID non specificato",
+ "description": "Attributo NameQualifier di NameID dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-48.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "49": {
+ "name": "49. Assertion - Attributo NameQualifier di NameID mancante",
+ "description": "Attributo NameQualifier di NameID dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-49.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "51": {
+ "name": "51. Assertion - Elemento SubjectConfirmation non specificato",
+ "description": "Elemento SubjectConfirmation dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-51.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "52": {
+ "name": "52. Assertion - Elemento SubjectConfirmation mancante",
+ "description": "Elemento SubjectConfirmation dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-52.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "53": {
+ "name": "53. Assertion - Attributo Method di SubjectConfirmation non specificato",
+ "description": "Attributo Method di SubjectConfirmation dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-53.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "54": {
+ "name": "54. Assertion - Attributo Method di SubjectConfirmation mancante",
+ "description": "Attributo Method di SubjectConfirmation dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-54.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "55": {
+ "name": "55. Assertion - Attributo Method di SubjectConfirmation diverso",
+ "description": "Attributo Method di SubjectConfirmation dell'Assertion diverso da urn:oasis:names:tc:SAML:2.0:cm:bearer. Risultato atteso: KO",
+ "path": "test/case-55.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "56": {
+ "name": "56. Assertion - Elemento SubjectConfirmationData mancante",
+ "description": "Elemento SubjectConfirmationData dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-56.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "57": {
+ "name": "57. Assertion - Attributo Recipient di SubjectConfirmationData non specificato",
+ "description": "Attributo Recipient di SubjectConfirmationData dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-57.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "58": {
+ "name": "58. Assertion - Attributo Recipient di SubjectConfirmationData mancante",
+ "description": "Attributo Recipient di SubjectConfirmationData dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-58.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "59": {
+ "name": "59. Assertion - Attributo Recipient di SubjectConfirmationData diverso",
+ "description": "Attributo Recipient di SubjectConfirmationData dell'Assertion diverso da AssertionConsumerServiceURL. Risultato atteso: KO",
+ "path": "test/case-59.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "60": {
+ "name": "60. Assertion - Attributo InResponseTo di SubjectConfirmationData non specificato",
+ "description": "Attributo InResponseTo di SubjectConfirmationData dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-60.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "61": {
+ "name": "61. Assertion - Attributo InResponseTo di SubjectConfirmationData mancante",
+ "description": "Attributo InResponseTo di SubjectConfirmationData dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-61.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "62": {
+ "name": "62. Assertion - Attributo InResponseTo di SubjectConfirmationData diverso da ID request",
+ "description": "Attributo InResponseTo di SubjectConfirmationData dell'Assertion diverso da ID request. Risultato atteso: KO",
+ "path": "test/case-62.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "63": {
+ "name": "63. Assertion - Attributo NotOnOrAfter di SubjectConfirmationData non specificato",
+ "description": "Attributo NotOnOrAfter di SubjectConfirmationData dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-63.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "64": {
+ "name": "64. Assertion - Attributo NotOnOrAfter di SubjectConfirmationData mancante",
+ "description": "Attributo NotOnOrAfter di SubjectConfirmationData mancante. Risultato atteso: KO",
+ "path": "test/case-64.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "65": {
+ "name": "65. Assertion - Attributo NotOnOrAfter di SubjectConfirmationData avente formato non corretto",
+ "description": "Attributo NotOnOrAfter di SubjectConfirmationData avente formato non corretto. Risultato atteso: KO",
+ "path": "test/case-65.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "66": {
+ "name": "66. Assertion - Attributo NotOnOrAfter di SubjectConfirmationData precedente all'istante di ricezione della response",
+ "description": "Attributo NotOnOrAfter di SubjectConfirmationData precedente all'istante di ricezione della response. Risultato atteso: KO",
+ "path": "test/case-66.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "67": {
+ "name": "67. Assertion - Elemento Issuer non specificato",
+ "description": "Elemento Issuer dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-67.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "68": {
+ "name": "68. Assertion - Elemento Issuer mancante",
+ "description": "Elemento Issuer dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-68.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "69": {
+ "name": "69. Assertion - Elemento Issuer diverso da EntityID IdP",
+ "description": "Elemento Issuer dell'Assertion diverso da EntityID IdP. Risultato atteso: KO",
+ "path": "test/case-69.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "70": {
+ "name": "70. Assertion - Attributo Format di Issuer non specificato",
+ "description": "Attributo Format di Issuer dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-70.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "71": {
+ "name": "71. Assertion - Attributo Format di Issuer mancante",
+ "description": "Attributo Format di Issuer dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-71.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "72": {
+ "name": "72. Assertion - Attributo Format di Issuer diverso",
+ "description": "L'attributo Format di Issuer dell'Assertion deve essere presente con il valore urn:oasis:names:tc:SAML:2.0:nameid-format:entity. In questo test, invece, il valore è diverso. Risultato atteso: KO",
+ "path": "test/case-72.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "73": {
+ "name": "73. Assertion - Elemento Conditions non specificato",
+ "description": "Elemento Conditions dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-73.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "74": {
+ "name": "74. Assertion - Elemento Conditions mancante",
+ "description": "Elemento Conditions dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-74.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "75": {
+ "name": "75. Assertion - Attributo NotBefore di Condition non specificato",
+ "description": "Attributo NotBefore di Condition dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-75.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "76": {
+ "name": "76. Assertion - Attributo NotBefore di Condition mancante",
+ "description": "Attributo NotBefore di Condition dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-76.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "77": {
+ "name": "77. Assertion - Attributo NotBefore di Condition avente formato non corretto",
+ "description": "Attributo NotBefore di Condition dell'Assertion avente formato non corretto. Risultato atteso: KO",
+ "path": "test/case-77.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "78": {
+ "name": "78. Assertion - Attributo NotBefore di Condition successivo all'instante di ricezione della response",
+ "description": "Attributo NotBefore di Condition dell'Assertion successivo all'instante di ricezione della response. Risultato atteso: KO",
+ "path": "test/case-78.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "79": {
+ "name": "79. Assertion - Attributo NotOnOrAfter di Condition non specificato",
+ "description": "Attributo NotOnOrAfter di Condition dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-79.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "80": {
+ "name": "80. Assertion - Attributo NotOnOrAfter di Condition mancante",
+ "description": "Attributo NotOnOrAfter di Condition dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-80.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "81": {
+ "name": "81. Assertion - Attributo NotOnOrAfter di Condition avente formato non corretto",
+ "description": "Attributo NotOnOrAfter di Condition dell'Assertion avente formato non corretto. Risultato atteso: KO",
+ "path": "test/case-81.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "82": {
+ "name": "82. Assertion - Attributo NotOnOrAfter di Condition precedente all'istante di ricezione della response",
+ "description": "Attributo NotOnOrAfter di Condition dell'Assertion precedente all'istante di ricezione della response. Risultato atteso: KO",
+ "path": "test/case-82.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "83": {
+ "name": "83. Assertion - Elemento AudienceRestriction di Condition non specificato",
+ "description": "Elemento AudienceRestriction di Condition dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-83.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "84": {
+ "name": "84. Assertion - Elemento AudienceRestriction di Condition mancante",
+ "description": "Elemento AudienceRestriction di Condition dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-84.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "85": {
+ "name": "85. Assertion - Elemento Audience di AudienceRestriction di Condition non specificato",
+ "description": "Elemento Audience di AudienceRestriction di Condition dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-85.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "86": {
+ "name": "86. Assertion - Elemento Audience di AudienceRestriction di Condition mancante",
+ "description": "Elemento Audience di AudienceRestriction di Condition dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-86.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "87": {
+ "name": "87. Assertion - Elemento Audience di AudienceRestriction di Condition diverso da Entity Id del Service Provider",
+ "description": "Elemento Audience di AudienceRestriction di Condition dell'Assertion diverso da Entity Id del Service Provider. Risultato atteso: KO",
+ "path": "test/case-87.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "88": {
+ "name": "88. Assertion - Elemento AuthStatement non specificato",
+ "description": "Elemento AuthStatement dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-88.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "89": {
+ "name": "89. Assertion - Elemento AuthStatement mancante",
+ "description": "Elemento AuthStatement dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-89.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "90": {
+ "name": "90. Assertion - Elemento AuthnContext di AuthStatement non specificato",
+ "description": "Elemento AuthnContext di AuthStatement dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-90.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "91": {
+ "name": "91. Assertion - Elemento AuthnContext di AuthStatement mancante",
+ "description": "Elemento AuthnContext di AuthStatement dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-91.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "92": {
+ "name": "92. Assertion - Elemento AuthContextClassRef di AuthnContext di AuthStatement non specificato",
+ "description": "Elemento AuthContextClassRef di AuthnContext di AuthStatement dell'Assertion non specificato. Risultato atteso: KO",
+ "path": "test/case-92.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "93": {
+ "name": "93. Assertion - Elemento AuthContextClassRef di AuthnContext di AuthStatement mancante",
+ "description": "Elemento AuthContextClassRef di AuthnContext di AuthStatement dell'Assertion mancante. Risultato atteso: KO",
+ "path": "test/case-93.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "94": {
+ "name": "94. Assertion - Elemento AuthContextClassRef impostato su https://www.spid.gov.it/SpidL1",
+ "description": "Elemento AuthContextClassRef impostato su https://www.spid.gov.it/SpidL1. Risultato atteso: fare attenzione al livello richiesto sulla request.",
+ "path": "test/base.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "AuthnContextClassRef": "https://www.spid.gov.it/SpidL1",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "95": {
+ "name": "95. Assertion - Elemento AuthContextClassRef impostato su https://www.spid.gov.it/SpidL2",
+ "description": "Elemento AuthContextClassRef impostato su https://www.spid.gov.it/SpidL2. Risultato atteso: fare attenzione al livello richiesto sulla request.",
+ "path": "test/base-nosession.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "AuthnContextClassRef": "https://www.spid.gov.it/SpidL2",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "96": {
+ "name": "96. Assertion - Elemento AuthContextClassRef impostato su https://www.spid.gov.it/SpidL3",
+ "description": "Elemento AuthContextClassRef impostato su https://www.spid.gov.it/SpidL3. Risultato atteso: fare attenzione al livello richiesto sulla request.",
+ "path": "test/base-nosession.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "AuthnContextClassRef": "https://www.spid.gov.it/SpidL3",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "97": {
+ "name": "97. Assertion - Elemento AuthContextClassRef impostato ad un valore non previsto",
+ "description": "Elemento AuthContextClassRef impostato ad un valore non previsto. Es. specifica precedente. Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "AuthnContextClassRef": "urn:oasis:names:tc:SAML:2.0:ac:classes:SpidL1",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "98": {
+ "name": "98. Assertion - Elemento AttributeStatement presente, ma sottoelemento Attribute mancante ",
+ "description": "Elemento AttributeStatement presente, ma sottoelemento Attribute mancante. Risultato atteso: KO",
+ "path": "test/case-98.xml",
+ "response": {
+ "NameIDNameQualifier": ""
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "99": {
+ "name": "99. Assertion - Elemento AttributeStatement presente, con sottoelemento Attribute non specificato",
+ "description": "Elemento AttributeStatement presente, ma sottoelemento Attribute non specificato. Risultato atteso: KO",
+ "path": "test/case-99.xml",
+ "response": {
+ "NameIDNameQualifier": ""
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "100": {
+ "name": "100. Assertion - Firma diversa",
+ "description": "Assertion firmata con certificato diverso. Risultato atteso: KO",
+ "path": "test/base.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true,
+ "sign_credentials": {
+ "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
+ "certificate": "MIIDljCCAn6gAwIBAgIJAMSLv+GOwGWAMA0GCSqGSIb3DQEBCwUAMGAxCzAJBgNVBAYTAklUMQ4wDAYDVQQIDAVJdGFseTENMAsGA1UEBwwEUm9tZTENMAsGA1UECgwEQWdJRDENMAsGA1UECwwEQWdJRDEUMBIGA1UEAwwLYWdpZC5nb3YuaXQwHhcNMTkwNDA4MTc1MTMwWhcNMjAwNDA3MTc1MTMwWjBgMQswCQYDVQQGEwJJVDEOMAwGA1UECAwFSXRhbHkxDTALBgNVBAcMBFJvbWUxDTALBgNVBAoMBEFnSUQxDTALBgNVBAsMBEFnSUQxFDASBgNVBAMMC2FnaWQuZ292Lml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsswE3L6ZbMWALv5fw73NmdZB5es3QaLNd3hq8sVVndDZUnM7yMHkYwPmlh1rFj82jPr2L9nasi32v6i283dsGCUxRH3VQo2Fi4awqvzx9g3mnd2p+CJKqN/xQuFyXkmDy7wKIopkv9EKJSFyyn9Y2h5FiKYucQoqQ2KJItt2y6tcTbhBRa7fMx99UPt1y5np31+oR4/BYWqLBtApMfGaXXDRNw/DBzmeew/uwC7tARMMG51MRBCZ83Mr5fIGeQZaYmDNCi+mIultLCVAZLqlv5h8p9bTAHNkNRpCh/V/I+q/L7Ajxfe/HEbydhJRyUjA0pmC4pAfvMlyDtQXMhh3FQIDAQABo1MwUTAdBgNVHQ4EFgQUodPRXj6pRrDfV011IiDnEOqnoMEwHwYDVR0jBBgwFoAUodPRXj6pRrDfV011IiDnEOqnoMEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEABkraIDMLDmpATNjR0uIu01gUOfIJMLWi75Ec03JGE/ljj2Kap7FO/RgqT5pmIUorb65rPlwsiP6Bv5Q7crDQMzVJdZwPzbboGlZR/dcqmQThgY4aOp7xcrmUCm3tWgwP52nw3QpLdVoiufy+5+MSuig6dklRqvx0tLGWgG2daUbdRtpEl8KtERMbVjoZGUqQE+WpIoKqxz2R84YY024XlMhRvxRAabFpYCNg5fAw0kRRXj3Zxmg7AdLzMStXHA/bked4ZoX6uJ19qLTOCLhlufQu8m3FL5Go5VL+qDdrNg7XYLxT1I5h1wtfebCA/e1IzHZmcUcAGVex4HgaAQwTNA==",
+ "privateKey": "MIIEpAIBAAKCAQEAsswE3L6ZbMWALv5fw73NmdZB5es3QaLNd3hq8sVVndDZUnM7yMHkYwPmlh1rFj82jPr2L9nasi32v6i283dsGCUxRH3VQo2Fi4awqvzx9g3mnd2p+CJKqN/xQuFyXkmDy7wKIopkv9EKJSFyyn9Y2h5FiKYucQoqQ2KJItt2y6tcTbhBRa7fMx99UPt1y5np31+oR4/BYWqLBtApMfGaXXDRNw/DBzmeew/uwC7tARMMG51MRBCZ83Mr5fIGeQZaYmDNCi+mIultLCVAZLqlv5h8p9bTAHNkNRpCh/V/I+q/L7Ajxfe/HEbydhJRyUjA0pmC4pAfvMlyDtQXMhh3FQIDAQABAoIBACi5PVZF904GAfcyKv+7aGvkmCfVFkXV3fSbMcjP13tViVo1MuW7+9ftmISSeMSda0BbHN2zQhOZUn0+4US865roRbty6bL55vPrnqujZz0C14cXaNJChTzHnPz9un3tQp6R2sEZQm9KHoRshOfIb6VmhbHlH+jRRuUIOXH+CKXEpTPDU4Th+fdoYEOQY7NFHoobPrQ8IegYgODrWX2pTYf9AA5RitBP0Ju4lePgJX000T7WRpkSkAgi6arWzHzf5YUyAIATIVvm0RkuLIn9Q6YDQJa3lEmhEub4LZA6EpnqJYEjmfcOp5rPEKtq8tPWyuKvlT6bzHdtXz5zSG5Bo9UCgYEA6T8UAgcgRRJDYhKhsuhzwk3qahi0XqBJJp+XO8fdQXEh783P6pv5uYR1QUdDtgFOP05NEGz0Mzkyx5qxqlOr0yXlj0Tajb64S+5jyo8dqB2zxj0M8NLCxbQMvFN88tAHCJMPZeKOyq83XgWff2GzXqbQ9yh+5jauejW7z7zDEjsCgYEAxD0pLEFuBPeS1Fzz0P2UmsvKDbViqd9BlVwNwOR3YtSzT5hihUt1qVK22EVqlSWzF+QmAK76FQMoXiiQ22fNxTcaviNj2qZ9xhadS6RuF2MbxXVVQzXY4Oie/+mZg37fP0JZCQdlwOYp4UN4ZDf7NWJC5WJph4kx9Hj1liJGNu8CgYEAiOhhkh8kreZebv6Isz8GU5LweX4uwSxMQ8OBPbG/CV6ikOO5mvgayO4a9UojUH3LtBT93xpU7IwyZj9C8btTLAkeic3ciz7bZpZzNL50pe1pTH8hTWoosWtR3mkS+mNo/Xt0mlU1g3r9gM7EJDzw0CoSlkDK285U857+sp0V02kCgYBpCnPnhH5nmj21/qtjytioozzcaaMOWrq4QDX8ck6VUFVK3b6equ2oXOYSjdWnUC61MyJEa2ThqncJL52aU84JKp3d+QOSHlxkk+ZOfw2O5zYOU+f3ufMFMH8rbNcHU/ob2l/ePV9yCcGRGpRu0KhewuIb9rmWGxHqUnTikCYVcQKBgQDUWuS6hNq5qUSCIGL5e8CMmc/wSAvQFgxZV4VgJdPexykaJc4LKoFYqbRSyOSJ2vpxxWa6qIPU0+kgNZT7lBf8JOd4MIg5sg6Q8hIQk/I6cTM3F3ehpsKoq9K7IcJQQWqHgkONEFeghIZH0nzhnwrtVuFZiCzc7c671MmJMhnPZQ=="
+ }
+ },
+ "103": {
+ "name": "103. Assertion - Set di attributi inviato diverso da quello richiesto",
+ "description": "Set di attributi inviato diverso da quello richiesto",
+ "path": "test/base.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "address": "via Test"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "104": {
+ "name": "104. Anomalie utente - Ripetuta sottomissione di credenziali errate (Anomalia 19)",
+ "description": "Elemento StatusCode ErrorCode nr19. Autenticazione fallita per ripetuta sottomissione di credenziali errate. Risultato atteso: KO. il S.P. deve mostrare schermata di errore",
+ "path": "test/case-anomalie-utente.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "StatusCode": "urn:oasis:names:tc:SAML:2.0:status:Responder",
+ "SubStatus": "urn:oasis:names:tc:SAML:2.0:status:AuthnFailed",
+ "StatusMessage": "ErrorCode nr19"
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ },
+ "105": {
+ "name": "105. Anomalie utente - Utente privo di credenziali compatibili (Anomalia 20)",
+ "description": "Elemento StatusCode ErrorCode nr20. Utente privo di credenziali compatibili con il livello richiesto dal fornitore del servizio. Risultato atteso: KO. il S.P. deve mostrare schermata di errore",
+ "path": "test/case-anomalie-utente.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "StatusCode": "urn:oasis:names:tc:SAML:2.0:status:Responder",
+ "SubStatus": "urn:oasis:names:tc:SAML:2.0:status:AuthnFailed",
+ "StatusMessage": "ErrorCode nr20"
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ },
+ "106": {
+ "name": "106. Anomalie utente - Timeout (Anomalia 21)",
+ "description": "Elemento StatusCode ErrorCode nr21. Timeout durante l'autenticazione utente. Risultato atteso: KO. il S.P. deve mostrare schermata di errore",
+ "path": "test/case-anomalie-utente.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "StatusCode": "urn:oasis:names:tc:SAML:2.0:status:Responder",
+ "SubStatus": "urn:oasis:names:tc:SAML:2.0:status:AuthnFailed",
+ "StatusMessage": "ErrorCode nr21"
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ },
+ "107": {
+ "name": "107. Anomalie utente - Consenso negato (Anomalia 22)",
+ "description": "Elemento StatusCode ErrorCode nr22. Utente nega il consenso all'invio di dati al SP in caso di sessione vigente. Risultato atteso: KO. il S.P. deve mostrare schermata di errore",
+ "path": "test/case-anomalie-utente.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "StatusCode": "urn:oasis:names:tc:SAML:2.0:status:Responder",
+ "SubStatus": "urn:oasis:names:tc:SAML:2.0:status:AuthnFailed",
+ "StatusMessage": "ErrorCode nr22"
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ },
+ "108": {
+ "name": "108. Anomalie utente - Credenziali bloccate (Anomalia 23)",
+ "description": "Elemento StatusCode ErrorCode nr23. Utente con identità sospesa/revocata o con credenziali bloccate. Risultato atteso: KO. il S.P. deve mostrare schermata di errore",
+ "path": "test/case-anomalie-utente.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "StatusCode": "urn:oasis:names:tc:SAML:2.0:status:Responder",
+ "SubStatus": "urn:oasis:names:tc:SAML:2.0:status:AuthnFailed",
+ "StatusMessage": "ErrorCode nr23"
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ },
+ "109": {
+ "name": "109. Attributi senza NameFormat",
+ "description": "Response corretta. Risultato atteso: Ok",
+ "path": "test/case-109.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "attributesNameFormat": false,
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "110": {
+ "name": "110. Response - IssueInstant con millisecondi",
+ "description": "Attributo IssueInstant specificato con millisecondi. Risultato atteso: OK",
+ "path": "test/case-110.xml",
+ "response": {
+ "IssueInstant": "",
+ "Issuer": "",
+ "AssertionID": "",
+ "NameIDNameQualifier": "",
+ "NameID": "",
+ "NotOnOrAfter": "",
+ "NotBefore": "",
+ "AuthnIstant": "",
+ "SessionIndex": "",
+ "AuthnContextClassRef": "",
+ "Attributes": {
+ "spidCode": "AGID-001",
+ "name": "SpidValidator",
+ "familyName": "AgID",
+ "placeOfBirth": "Roma",
+ "countyOfBirth": "RM",
+ "dateOfBirth": "2000-01-01",
+ "gender": "M",
+ "companyName": "Agenzia per l'Italia Digitale",
+ "registeredOffice": "Via Listz 21 00144 Roma",
+ "fiscalNumber": "TINIT-GDASDV00A01H501J",
+ "ivaCode": "VATIT-97735020584",
+ "idCard": "CartaIdentità AA00000000 ComuneRoma 2018-01-01 2028-01-01",
+ "expirationDate": "2028-01-01",
+ "mobilePhone": "+393331234567",
+ "email": "spid.tech@agid.gov.it",
+ "address": "Via Listz 21 00144 Roma",
+ "digitalAddress": "pec@pecagid.gov.it",
+ "companyFiscalNumber": "TINIT-GDASDV00A01H501J",
+ "domicileStreetAddress": "Via Listz 21",
+ "domicilePostalCode": "00144",
+ "domicileMunicipality": "Roma",
+ "domicileProvince": "RM",
+ "domicileNation": "IT"
+ }
+ },
+ "sign_response": true,
+ "sign_assertion": true
+ },
+ "111": {
+ "name": "111. Anomalie utente - Processo di autenticazione annullato dall'utente (Anomalia 25)",
+ "description": "Elemento StatusCode ErrorCode nr25. Processo di autenticazione annullato dall'utente. Risultato atteso: KO. il S.P. deve mostrare schermata di errore",
+ "path": "test/case-anomalie-utente.xml",
+ "response": {
+ "NameIDNameQualifier": "",
+ "StatusCode": "urn:oasis:names:tc:SAML:2.0:status:Responder",
+ "SubStatus": "urn:oasis:names:tc:SAML:2.0:status:AuthnFailed",
+ "StatusMessage": "ErrorCode nr25"
+ },
+ "sign_response": true,
+ "sign_assertion": false
+ }
+ }
+ },
+ "test-logout": {
+ "description": "Test Logout Response",
+ "response": {
+ "ResponseID": "",
+ "IssueInstant": "",
+ "Destination": "",
+ "AuthnRequestID": "",
+ "NameQualifier": "",
+ "Issuer": ""
+ },
+ "cases": {
+ "1": {
+ "name": "01. Logout",
+ "description": "Logout corretto",
+ "path": "test/logout-1.xml",
+ "response": {},
+ "sign_response": true
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/e2e/yarn.lock b/e2e/yarn.lock
index 3ac5a798..a8141e07 100644
--- a/e2e/yarn.lock
+++ b/e2e/yarn.lock
@@ -2453,6 +2453,13 @@ node-fetch@2.6.7:
dependencies:
whatwg-url "^5.0.0"
+node-fetch@^2:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
+ integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
+ dependencies:
+ whatwg-url "^5.0.0"
+
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
diff --git a/package.json b/package.json
index 4bb1a21a..91662738 100644
--- a/package.json
+++ b/package.json
@@ -64,9 +64,8 @@
"dependencies": {
"@aws-sdk/client-s3": "^3.121.0",
"@aws-sdk/credential-providers": "^3.137.0",
- "@pagopa/io-spid-commons": "^12.0.1",
+ "@pagopa/io-spid-commons": "^13.2.2",
"@pagopa/ts-commons": "^12.0.0",
- "@types/redis": "^2.8.32",
"azure-storage": "^2.10.4",
"cors": "^2.8.5",
"crypto": "^1.0.1",
@@ -81,8 +80,7 @@
"node-forge": "^1.3.0",
"passport": "^0.6.0",
"passport-saml": "1.3.5",
- "redis": "^3.1.2",
- "redis-clustr": "^1.7.0",
+ "redis": "^4.5.1",
"ulid": "^2.2.2",
"winston": "^3.0.0",
"xml-crypto": "^1.4.0",
diff --git a/src/@types/redis-clustr/index.d.ts b/src/@types/redis-clustr/index.d.ts
deleted file mode 100644
index 7394e46c..00000000
--- a/src/@types/redis-clustr/index.d.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * This files contains the typescript declaration of module redis-clustr.
- */
-
- declare module "redis-clustr" {
- interface IServer {
- readonly host: string;
- readonly port: number;
- }
-
- interface IRedisOptions {
- readonly auth_pass?: string;
- readonly tls: {
- readonly servername: string;
- };
- }
-
- interface IOptions {
- readonly redisOptions: IRedisOptions;
- readonly servers: ReadonlyArray;
- }
-
- class RedisClustr {
- constructor(conf: IOptions);
- }
-
- export = RedisClustr;
-}
diff --git a/src/app.ts b/src/app.ts
index d476e6a7..251da9e2 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -18,8 +18,9 @@ import {
} from "@pagopa/io-spid-commons/dist/utils/middleware";
import * as cors from "cors";
import { pipe } from "fp-ts/lib/function";
-import * as T from "fp-ts/lib/Task";
import { ValidUrl } from "@pagopa/ts-commons/lib/url";
+import * as TE from "fp-ts/TaskEither";
+import * as T from "fp-ts/Task";
import {
accessLogHandler,
getAcs,
@@ -35,7 +36,7 @@ import {
import { getConfigOrThrow } from "./utils/config";
import { getHealthcheckHandler } from "./handlers/general";
import { logger } from "./utils/logger";
-import { REDIS_CLIENT } from "./utils/redis";
+import { CreateRedisClientTask } from "./utils/redis";
import {
createAccessLogEncrypter,
createAccessLogWriter,
@@ -44,7 +45,7 @@ import {
const config = getConfigOrThrow();
-export const appConfig: IApplicationConfig = {
+export const appConfig: IApplicationConfig = {
assertionConsumerServicePath: config.ENDPOINT_ACS,
// clientErrorRedirectionUrl: CLIENT_ERROR_REDIRECTION_URL,
// clientLoginRedirectionUrl: CLIENT_REDIRECTION_URL,
@@ -106,12 +107,6 @@ const serviceProviderConfig: IServiceProviderConfig = {
: undefined
};
-const redisClient = REDIS_CLIENT;
-
-process.on("SIGINT", () => {
- redisClient.quit();
-});
-
const samlConfig: SamlConfig = {
RACComparison: "minimum",
acceptedClockSkewMs: 2000,
@@ -162,22 +157,36 @@ const doneCb = config.ENABLE_SPID_ACCESS_LOGS
*
*/
export const createAppTask = pipe(
- withSpid({
- acs: getAcs(config),
- app,
- appConfig,
- doneCb,
- logout,
- redisClient, // redisClient for authN request
- samlConfig,
- serviceProviderConfig
+ CreateRedisClientTask,
+ TE.chainTaskK(REDIS_CLIENT => {
+ process.on("SIGINT", () => {
+ REDIS_CLIENT.quit().catch(err =>
+ logger.error(`Error closing the redis connection: [${err}]`)
+ );
+ });
+ return pipe(
+ withSpid({
+ acs: getAcs(config, REDIS_CLIENT),
+ app,
+ appConfig,
+ doneCb,
+ logout,
+ redisClient: REDIS_CLIENT, // redisClient for authN request
+ samlConfig,
+ serviceProviderConfig
+ }),
+ T.map(_ => ({ ..._, REDIS_CLIENT }))
+ );
}),
- T.map(({ app: withSpidApp, idpMetadataRefresher }) => {
+ TE.map(({ app: withSpidApp, idpMetadataRefresher, REDIS_CLIENT }) => {
withSpidApp.get(config.ENDPOINT_SUCCESS, successHandler);
if (config.ENABLE_ADE_AA) {
withSpidApp.get(config.ENDPOINT_L1_SUCCESS, successHandler);
- withSpidApp.post("/upgradeToken", upgradeTokenHandler(config));
+ withSpidApp.post(
+ "/upgradeToken",
+ upgradeTokenHandler(config, REDIS_CLIENT)
+ );
}
withSpidApp.get("/error", errorHandler);
withSpidApp.get("/refresh", metadataRefreshHandler(idpMetadataRefresher));
@@ -188,11 +197,11 @@ export const createAppTask = pipe(
});
});
- withSpidApp.get("/healthcheck", getHealthcheckHandler(redisClient));
+ withSpidApp.get("/healthcheck", getHealthcheckHandler(REDIS_CLIENT));
- withSpidApp.post("/introspect", getIntrospectHandler(config));
+ withSpidApp.post("/introspect", getIntrospectHandler(config, REDIS_CLIENT));
- withSpidApp.post("/invalidate", getInvalidateHandler(config));
+ withSpidApp.post("/invalidate", getInvalidateHandler(config, REDIS_CLIENT));
withSpidApp.use(
(
diff --git a/src/handlers/__tests__/spid.test.ts b/src/handlers/__tests__/spid.test.ts
index b5ef239f..2f69fec3 100644
--- a/src/handlers/__tests__/spid.test.ts
+++ b/src/handlers/__tests__/spid.test.ts
@@ -30,6 +30,7 @@ import { IConfig } from "../../utils/config";
import mockRes from "../../__mocks__/response";
import { SpidLevelEnum } from "../../utils/spid";
import * as jwt from "jsonwebtoken";
+import * as redis from "redis";
// Mock logger to spy error
const spiedLoggerError = jest.spyOn(logger, "error");
@@ -54,6 +55,8 @@ const mockMakeSpidLogBlobName = jest.fn<
const mockGetAssertion = jest.fn().mockReturnValue(aSAMLResponse);
+const mockRedisClient = {} as redis.RedisClientType | redis.RedisClusterType;
+
const aValidAcsPayload = {
fiscalNumber: anInternationalFiscalCode,
getAssertionXml: mockGetAssertion
@@ -223,7 +226,7 @@ describe("acs", () => {
JWT_TOKEN_PRIVATE_KEY: privateKey,
JWT_TOKEN_KID: aJwtKeyId
} as unknown) as IConfig);
- const response = await getAcs(config)(aValidAcsPayload);
+ const response = await getAcs(config, mockRedisClient)(aValidAcsPayload);
response.apply(aMockedResponse);
const rawJwt = aMockedResponse.redirect.mock.calls[0][1].replace(
diff --git a/src/handlers/general.ts b/src/handlers/general.ts
index 47beadc5..e5be2778 100644
--- a/src/handlers/general.ts
+++ b/src/handlers/general.ts
@@ -2,7 +2,7 @@ import * as express from "express";
import { toError } from "fp-ts/lib/Either";
import * as TE from "fp-ts/lib/TaskEither";
-import { RedisClient } from "redis";
+import * as redis from "redis";
import { flow, pipe } from "fp-ts/lib/function";
import { AdeAPIClient } from "../clients/ade";
import { getConfigOrThrow } from "../utils/config";
@@ -11,13 +11,13 @@ import { pingTask } from "../utils/redis_storage";
const config = getConfigOrThrow();
-export const getHealthcheckHandler = (redisClient: RedisClient) => (
- _: express.Request,
- res: express.Response
-): Promise =>
+export const getHealthcheckHandler = (
+ redisClient: redis.RedisClientType | redis.RedisClusterType
+) => (_: express.Request, res: express.Response): Promise =>
// first ping for redis
pipe(
- pingTask(redisClient),
+ // TODO: Check if the casting will cause an error with RedisClusterType
+ pingTask(redisClient as redis.RedisClientType),
TE.chain(() =>
// if Attribute Authority is enabled check for service is up&running
config.ENABLE_ADE_AA
diff --git a/src/handlers/spid.ts b/src/handlers/spid.ts
index 16f45338..6afa2786 100644
--- a/src/handlers/spid.ts
+++ b/src/handlers/spid.ts
@@ -16,6 +16,7 @@ import { withoutUndefinedValues } from "@pagopa/ts-commons/lib/types";
import { ValidUrl } from "@pagopa/ts-commons/lib/url";
import { ResponsePermanentRedirect } from "@pagopa/ts-commons/lib/responses";
import { AssertionConsumerServiceT } from "@pagopa/io-spid-commons";
+import * as redis from "redis";
import { SpidLogMsg } from "../types/access_log";
import {
AccessLogWriter,
@@ -143,9 +144,10 @@ export const accessLogHandler = (
};
export const getAcs: (
- config: IConfig
+ config: IConfig,
+ redisClient: redis.RedisClientType | redis.RedisClusterType
) => // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
-AssertionConsumerServiceT = config => async user =>
+AssertionConsumerServiceT = (config, redisClient) => async user =>
pipe(
user,
SpidUser.decode,
@@ -268,7 +270,7 @@ AssertionConsumerServiceT = config => async user =>
? toRequestId(user as Record)
: undefined;
return pipe(
- getGenerateToken(config)(tokenUser, requestId),
+ getGenerateToken(config, redisClient)(tokenUser, requestId),
TE.mapLeft(toResponseErrorInternal)
);
}),
diff --git a/src/handlers/token.ts b/src/handlers/token.ts
index 6f37b4c4..6dcd4d23 100644
--- a/src/handlers/token.ts
+++ b/src/handlers/token.ts
@@ -14,13 +14,13 @@ import * as J from "fp-ts/Json";
import * as b from "fp-ts/boolean";
import * as t from "io-ts";
import { readableReport } from "@pagopa/ts-commons/lib/reporters";
+import * as redis from "redis";
import {
deleteTask,
existsKeyTask,
getTask,
setWithExpirationTask
} from "../utils/redis_storage";
-import { REDIS_CLIENT } from "../utils/redis";
import {
extractJwtRemainingValidTime,
extractRawDataFromJwt,
@@ -34,10 +34,10 @@ import { UpgradeTokenBody } from "../types/request";
const SESSION_TOKEN_PREFIX = "session-token:";
const SESSION_INVALIDATE_TOKEN_PREFIX = "session-token-invalidate:";
-const redisClient = REDIS_CLIENT;
const getRawTokenUserFromRedis = (
token: string,
- res: express.Response
+ res: express.Response,
+ redisClient: redis.RedisClientType | redis.RedisClusterType
): TE.TaskEither =>
pipe(
getTask(redisClient, `${SESSION_TOKEN_PREFIX}${token}`),
@@ -74,12 +74,18 @@ export const getTokenExpiration = (config: IConfig) => (
: config.L2_TOKEN_EXPIRATION
: config.TOKEN_EXPIRATION;
-export const getGenerateToken = (config: IConfig) => (
+export const getGenerateToken = (
+ config: IConfig,
+ redisClient: redis.RedisClusterType | redis.RedisClientType
+) => (
tokenUser: TokenUser | TokenUserL2,
requestId?: NonEmptyString
): TE.TaskEither<
Error,
- { readonly tokenStr: string; readonly tokenUser: TokenUser | TokenUserL2 }
+ {
+ readonly tokenStr: string;
+ readonly tokenUser: TokenUser | TokenUserL2;
+ }
> =>
pipe(
TE.of(getTokenExpiration(config)(tokenUser)),
@@ -121,7 +127,10 @@ export const getGenerateToken = (config: IConfig) => (
)
);
-export const getIntrospectHandler = (config: IConfig) => async (
+export const getIntrospectHandler = (
+ config: IConfig,
+ redisClient: redis.RedisClusterType | redis.RedisClientType
+) => async (
req: express.Request,
res: express.Response
): Promise =>
@@ -147,7 +156,7 @@ export const getIntrospectHandler = (config: IConfig) => async (
() => res.status(200).json({ active: true })
)
),
- TE.chain(() => getRawTokenUserFromRedis(req.body.token, res)),
+ TE.chain(() => getRawTokenUserFromRedis(req.body.token, res, redisClient)),
// ensure raw token is in the correct shape
TE.chain(
flow(
@@ -181,7 +190,10 @@ export const getIntrospectHandler = (config: IConfig) => async (
)
)();
-export const getInvalidateHandler = (config: IConfig) => async (
+export const getInvalidateHandler = (
+ config: IConfig,
+ redisClient: redis.RedisClusterType | redis.RedisClientType
+) => async (
req: express.Request,
res: express.Response // first check if token is blacklisted
): Promise> =>
@@ -209,7 +221,8 @@ export const getInvalidateHandler = (config: IConfig) => async (
)();
export const upgradeTokenHandler = (
- config: IConfig & EnabledAttributeAuthorityParams
+ config: IConfig & EnabledAttributeAuthorityParams,
+ redisClient: redis.RedisClusterType | redis.RedisClientType
) => async (
req: express.Request,
res: express.Response
@@ -244,7 +257,7 @@ export const upgradeTokenHandler = (
b.fold(
() =>
pipe(
- getRawTokenUserFromRedis(req.body.token, res),
+ getRawTokenUserFromRedis(req.body.token, res, redisClient),
TE.map(_ => ({
organizationFiscalCode,
rawTokenUser: _
@@ -305,11 +318,12 @@ export const upgradeTokenHandler = (
),
TE.chain(tokenUserL2 =>
pipe(
- getGenerateToken(config)(tokenUserL2),
+ getGenerateToken(config, redisClient)(tokenUserL2),
TE.mapLeft(err =>
- res
- .status(500)
- .json({ detail: err.message, error: "Error generating L2 Token" })
+ res.status(500).json({
+ detail: err.message,
+ error: "Error generating L2 Token"
+ })
)
)
),
diff --git a/src/server.ts b/src/server.ts
index 3e833cfe..adcd9d7a 100644
--- a/src/server.ts
+++ b/src/server.ts
@@ -1,7 +1,10 @@
import * as http from "http";
+import { pipe } from "fp-ts/lib/function";
+import * as E from "fp-ts/Either";
import { createAppTask } from "./app";
import { initAppInsights } from "./utils/appinsights";
import { getConfigOrThrow } from "./utils/config";
+import { logger } from "./utils/logger";
const config = getConfigOrThrow();
const appInsights = initAppInsights(config.APPINSIGHTS_INSTRUMENTATIONKEY, {
@@ -13,10 +16,16 @@ appInsights.context.tags[appInsights.context.keys.cloudRole] =
"hub-spid-login-ms";
createAppTask()
- .then(app => {
- http.createServer(app).listen(config.SERVER_PORT);
- // eslint-disable-next-line no-console
- console.log(`Server listening at port ${config.SERVER_PORT}`);
+ .then(errorOrApp => {
+ pipe(
+ errorOrApp,
+ E.map(app => {
+ http.createServer(app).listen(config.SERVER_PORT);
+ logger.info(`Server listening at port ${config.SERVER_PORT}`);
+ }),
+ E.mapLeft(error => {
+ logger.error(`Error starting the App: [${error}]`);
+ })
+ );
})
- // eslint-disable-next-line no-console
- .catch(e => console.error("Application error: ", e));
+ .catch(e => logger.error("Application error: ", e));
diff --git a/src/utils/__tests__/redis_storage.test.ts b/src/utils/__tests__/redis_storage.test.ts
index 38291c2f..47400867 100644
--- a/src/utils/__tests__/redis_storage.test.ts
+++ b/src/utils/__tests__/redis_storage.test.ts
@@ -3,7 +3,7 @@ import { pipe, flow } from "fp-ts/lib/function";
import {
existsKeyTask,
getTask,
- setWithExpirationTask,
+ setWithExpirationTask
} from "../redis_storage";
import * as T from "fp-ts/lib/Task";
import * as TE from "fp-ts/lib/TaskEither";
@@ -14,15 +14,14 @@ const aRedisKey = "KEY";
const aRedisValue = "VALUE";
const aRedisDefaultExpiration = 10;
-const setMock = jest
- .fn()
- .mockImplementation((_, __, ___, ____, cb) => cb(undefined, "OK"));
-const getMock = jest.fn().mockImplementation((_, cb) => cb(null, aRedisValue));
-const existsMock = jest.fn().mockImplementation((_, cb) => cb(null, 1));
+const setMock = jest.fn().mockResolvedValue("OK");
+const getMock = jest.fn().mockResolvedValue(aRedisValue);
+const existsMock = jest.fn().mockResolvedValue(1);
const redisClientMock = {
exists: existsMock,
get: getMock,
set: setMock,
+ setEx: setMock
};
describe("setWithExpirationTask", () => {
@@ -40,9 +39,7 @@ describe("setWithExpirationTask", () => {
});
it("should return an error if redis store key-value pair returns undefined", async () => {
- setMock.mockImplementationOnce((_, __, ___, ____, cb) =>
- cb(undefined, undefined)
- );
+ setMock.mockResolvedValueOnce(undefined);
const value = pipe(
await setWithExpirationTask(
redisClientMock as any,
@@ -56,9 +53,7 @@ describe("setWithExpirationTask", () => {
});
it("should return an error if redis store key-value pair fails", async () => {
- setMock.mockImplementationOnce((_, __, ___, ____, cb) =>
- cb(new Error("Cannot store key-value pair"), undefined)
- );
+ setMock.mockRejectedValueOnce(new Error("Cannot store key-value pair"));
const value = pipe(
await setWithExpirationTask(
redisClientMock as any,
@@ -78,7 +73,7 @@ describe("getTask", () => {
TE.tryCatch(getTask(redisClientMock as any, aRedisKey), () => E.toError),
TE.fold(
() => fail,
- (maybeResult) => flow(O.fromEither, O.fold(fail, T.of))(maybeResult)
+ maybeResult => flow(O.fromEither, O.fold(fail, T.of))(maybeResult)
)
)();
if (O.isSome(res)) {
@@ -87,7 +82,7 @@ describe("getTask", () => {
});
it("should return none if no value was found for the provided key", async () => {
- getMock.mockImplementationOnce((_, cb) => cb(undefined, null));
+ getMock.mockResolvedValueOnce(null);
const value = pipe(
getTask(redisClientMock as any, aRedisKey),
TE.fold(fail, T.of)
@@ -96,9 +91,7 @@ describe("getTask", () => {
});
it("should return an error if redis get value fails", async () => {
- getMock.mockImplementationOnce((_, cb) =>
- cb(new Error("Cannot get value"), null)
- );
+ getMock.mockRejectedValueOnce(new Error("Cannot get value"));
const res = pipe(
getTask(redisClientMock as any, aRedisKey),
TE.fold(T.of, fail)
@@ -117,7 +110,7 @@ describe("existsTask", () => {
});
it("should return false if key does not exists in redis", async () => {
- existsMock.mockImplementationOnce((_, cb) => cb(null, 0));
+ existsMock.mockResolvedValueOnce(0);
const exists = await pipe(
existsKeyTask(redisClientMock as any, aRedisKey),
TE.fold(fail, T.of)
@@ -126,8 +119,8 @@ describe("existsTask", () => {
});
it("should return an error if redis exists fails", async () => {
- existsMock.mockImplementationOnce((_, cb) =>
- cb(new Error("Cannot recognize exists on redis"), null)
+ existsMock.mockRejectedValueOnce(
+ new Error("Cannot recognize exists on redis")
);
const res = await pipe(
existsKeyTask(redisClientMock as any, aRedisKey),
diff --git a/src/utils/redis.ts b/src/utils/redis.ts
index 64501e41..bacabf09 100644
--- a/src/utils/redis.ts
+++ b/src/utils/redis.ts
@@ -1,111 +1,134 @@
import { pipe } from "fp-ts/lib/function";
import * as O from "fp-ts/lib/Option";
import * as redis from "redis";
-import RedisClustr = require("redis-clustr");
+import * as TE from "fp-ts/TaskEither";
import { getConfigOrThrow } from "./config";
import { logger } from "./logger";
const config = getConfigOrThrow();
-const createSimpleRedisClient = (
+export const createSimpleRedisClient = async (
redisUrl: string,
password?: string,
port?: string,
- useTls: boolean = true
-): redis.RedisClient => {
- const DEFAULT_REDIS_PORT = "6379";
+ enableTls: boolean = true
+): Promise => {
+ const DEFAULT_REDIS_PORT = enableTls ? "6380" : "6379";
+ const prefixUrl = enableTls ? "rediss://" : "redis://";
+ const completeRedisUrl = `${prefixUrl}${redisUrl}`;
const redisPort: number = parseInt(port || DEFAULT_REDIS_PORT, 10);
- return redis.createClient({
- auth_pass: password,
- host: redisUrl,
- port: redisPort,
- retry_strategy: retryOptions => {
- if (retryOptions.error && retryOptions.error.code === "ECONNREFUSED") {
- // End reconnecting on a specific error and flush all commands with
- // a individual error
- return new Error("The server refused the connection");
- }
-
- if (retryOptions.total_retry_time > 1000 * 60 * 60) {
- // End reconnecting after a specific timeout and flush all commands
- // with a individual error
- return new Error("Retry time exhausted");
- }
- if (retryOptions.attempt > 3) {
- // End reconnecting with built in error
- return new Error("Retry attempt exhausted");
- }
-
- // Reconnect after
- return Math.min(retryOptions.attempt * 100, 3000);
+ const redisClient = redis.createClient<
+ Record,
+ Record,
+ Record
+ >({
+ legacyMode: false,
+ password,
+ socket: {
+ checkServerIdentity: (_hostname, _cert) => undefined,
+ keepAlive: 2000,
+ tls: enableTls
},
- socket_keepalive: true,
- tls: useTls ? { servername: redisUrl } : undefined
+ url: `${completeRedisUrl}:${redisPort}`
});
+ await redisClient.connect();
+ return redisClient;
};
-const createClusterRedisClient = (
+export const createClusterRedisClient = async (
redisUrl: string,
password?: string,
- port?: string
-): redis.RedisClient => {
- const DEFAULT_REDIS_PORT = "6379";
+ port?: string,
+ enableTls: boolean = true,
+ useReplicas: boolean = true
+): Promise => {
+ const DEFAULT_REDIS_PORT = enableTls ? "6380" : "6379";
+ const prefixUrl = enableTls ? "rediss://" : "redis://";
+ const completeRedisUrl = `${prefixUrl}${redisUrl}`;
const redisPort: number = parseInt(port || DEFAULT_REDIS_PORT, 10);
- return new RedisClustr({
- redisOptions: {
- auth_pass: password,
- tls: {
- servername: redisUrl
+
+ const redisClient = redis.createCluster<
+ Record,
+ Record,
+ Record
+ >({
+ defaults: {
+ legacyMode: false,
+ password,
+ socket: {
+ checkServerIdentity: (_hostname, _cert) => undefined,
+ keepAlive: 2000,
+ reconnectStrategy: retries => Math.min(retries * 100, 3000),
+ tls: enableTls
}
},
- servers: [
+ rootNodes: [
{
- host: redisUrl,
- port: redisPort
+ url: `${completeRedisUrl}:${redisPort}`
}
- ]
- }) as redis.RedisClient; // Casting RedisClustr with missing typings to RedisClient (same usage).
+ ],
+ useReplicas
+ });
+ await redisClient.connect();
+ return redisClient;
};
-export const REDIS_CLIENT = pipe(
+export const CreateRedisClientTask: TE.TaskEither<
+ Error,
+ redis.RedisClientType | redis.RedisClusterType
+> = pipe(
O.fromPredicate(_ => _)(config.isProduction),
O.mapNullable(_ => config.REDIS_CLUSTER_ENABLED),
O.chain(O.fromPredicate(_ => _)),
- O.map(() =>
- createClusterRedisClient(
- config.REDIS_URL,
- config.REDIS_PASSWORD,
- config.REDIS_PORT
- )
+ O.fold<
+ boolean,
+ TE.TaskEither
+ >(
+ () =>
+ TE.tryCatch(
+ () =>
+ createSimpleRedisClient(
+ config.REDIS_URL,
+ config.REDIS_PASSWORD,
+ config.REDIS_PORT,
+ config.REDIS_TLS_ENABLED
+ ),
+ () => new Error("Error Connecting to redis")
+ ),
+ () =>
+ TE.tryCatch(
+ () =>
+ createClusterRedisClient(
+ config.REDIS_URL,
+ config.REDIS_PASSWORD,
+ config.REDIS_PORT,
+ config.REDIS_TLS_ENABLED
+ ),
+ () => new Error("Error Connecting redis cluster")
+ )
),
- O.getOrElse(() =>
- createSimpleRedisClient(
- config.REDIS_URL,
- config.REDIS_PASSWORD,
- config.REDIS_PORT,
- config.REDIS_TLS_ENABLED
- )
- )
-);
+ TE.chain(REDIS_CLIENT => {
+ REDIS_CLIENT.on("connect", () => {
+ logger.info("Client connected to redis...");
+ });
-REDIS_CLIENT.on("connect", () => {
- logger.info("Client connected to redis...");
-});
+ REDIS_CLIENT.on("ready", () => {
+ logger.info("Client connected to redis and ready to use...");
+ });
-REDIS_CLIENT.on("ready", () => {
- logger.info("Client connected to redis and ready to use...");
-});
+ REDIS_CLIENT.on("reconnecting", () => {
+ logger.info("Client reconnecting...");
+ });
-REDIS_CLIENT.on("reconnecting", () => {
- logger.info("Client reconnecting...");
-});
+ REDIS_CLIENT.on("error", err => {
+ logger.info(`Redis error: ${err}`);
+ });
-REDIS_CLIENT.on("error", err => {
- logger.info(`Redis error: ${err}`);
-});
-
-REDIS_CLIENT.on("end", () => {
- logger.info("Client disconnected from redis");
-});
+ REDIS_CLIENT.on("end", () => {
+ logger.info("Client disconnected from redis");
+ });
+ return TE.right(REDIS_CLIENT);
+ })
+);
diff --git a/src/utils/redis_storage.ts b/src/utils/redis_storage.ts
index eaec2e2f..be71a84e 100644
--- a/src/utils/redis_storage.ts
+++ b/src/utils/redis_storage.ts
@@ -1,91 +1,82 @@
-import { fromNullable, Option } from "fp-ts/lib/Option";
-import { RedisClient } from "redis";
+import { Option } from "fp-ts/lib/Option";
+import * as redis from "redis";
import { pipe } from "fp-ts/lib/function";
import * as E from "fp-ts/lib/Either";
import * as TE from "fp-ts/lib/TaskEither";
+import * as O from "fp-ts/Option";
+
/**
* Parse a Redis given string reply.
*
* @see https://redis.io/topics/protocol#simple-string-reply.
*/
-export const givenStringReply = (
- err: Error | null,
- reply: string | undefined,
- message: string
-): E.Either => {
- if (err) {
- return E.left(err);
- }
-
- return E.right(reply === message);
-};
+export const givenStringReplyAsync = (message: string) => (
+ command: TE.TaskEither
+): TE.TaskEither =>
+ pipe(
+ command,
+ TE.map(reply => reply === message)
+ );
/**
* Parse a Redis single string reply.
*
* @see https://redis.io/topics/protocol#simple-string-reply.
*/
-export const singleStringReply = (
- err: Error | null,
- reply: "OK" | undefined
-): E.Either => {
- if (err) {
- return E.left(err);
- }
-
- return E.right(reply === "OK");
-};
+export const singleStringReplyAsync = (
+ command: TE.TaskEither
+): TE.TaskEither =>
+ pipe(
+ command,
+ TE.map(reply => reply === "OK")
+ );
/**
* Parse a Redis single string reply.
*
* @see https://redis.io/topics/protocol#simple-string-reply.
*/
-export const singleValueReply = (
- err: Error | null,
- reply: string | null
-): E.Either> => {
- if (err) {
- return E.left>(err);
- }
- return E.right>(fromNullable(reply));
-};
+export const singleValueReplyAsync = (
+ command: TE.TaskEither
+): TE.TaskEither> =>
+ pipe(
+ command,
+ TE.map(value => {
+ if (value && typeof value === "string") {
+ return O.some(value);
+ }
+ return O.none;
+ })
+ );
/**
* Parse a Redis integer reply.
*
* @see https://redis.io/topics/protocol#integer-reply
*/
-export const integerReply = (
- err: Error | null,
- reply: unknown,
- expectedReply?: number
-): E.Either => {
- if (err) {
- return E.left(err);
- }
- if (expectedReply !== undefined && expectedReply !== reply) {
- return E.right(false);
- }
- return E.right(typeof reply === "number");
-};
+export const integerReplyAsync = (expectedReply?: number) => (
+ command: TE.TaskEither
+): TE.TaskEither =>
+ pipe(
+ command,
+ TE.chain(reply => {
+ if (expectedReply !== undefined && expectedReply !== reply) {
+ return TE.right(false);
+ }
+ return TE.right(typeof reply === "number");
+ })
+ );
-export const falsyResponseToError = (
- response: E.Either,
- error: Error
-): E.Either => {
- if (E.isLeft(response)) {
- return E.left(response.left);
- } else {
- if (response.right) {
- return E.right(true);
- }
- return E.left(error);
- }
-};
+export const falsyResponseToErrorAsync = (error: Error) => (
+ response: TE.TaskEither
+): TE.TaskEither =>
+ pipe(
+ response,
+ TE.chain(_ => (_ ? TE.right(_) : TE.left(error)))
+ );
export const setWithExpirationTask = (
- redisClient: RedisClient,
+ redisClient: redis.RedisClientType | redis.RedisClusterType,
key: string,
value: string,
expirationInSeconds: number,
@@ -93,131 +84,60 @@ export const setWithExpirationTask = (
): TE.TaskEither =>
pipe(
TE.tryCatch(
- () =>
- new Promise>(resolve =>
- redisClient.set(
- key,
- value,
- "EX",
- expirationInSeconds,
- (err, response) =>
- resolve(
- falsyResponseToError(
- singleStringReply(err, response),
- new Error(
- errorMsg
- ? errorMsg
- : "Error setting key value pair on redis"
- )
- )
- )
- )
- ),
+ () => redisClient.setEx(key, expirationInSeconds, value),
E.toError
),
- TE.chain(TE.fromEither)
+ singleStringReplyAsync,
+ falsyResponseToErrorAsync(
+ new Error(errorMsg ? errorMsg : "Error setting key value pair on redis")
+ )
);
export const setTask = (
- redisClient: RedisClient,
+ redisClient: redis.RedisClientType | redis.RedisClusterType,
key: string,
value: string,
errorMsg?: string
): TE.TaskEither =>
pipe(
- TE.tryCatch(
- () =>
- new Promise>(resolve =>
- // eslint-disable-next-line sonarjs/no-identical-functions
- redisClient.set(key, value, (err, response) =>
- resolve(
- falsyResponseToError(
- singleStringReply(err, response),
- new Error(
- errorMsg ? errorMsg : "Error setting key value pair on redis"
- )
- )
- )
- )
- ),
- E.toError
- ),
- TE.chain(TE.fromEither)
+ TE.tryCatch(() => redisClient.set(key, value), E.toError),
+ singleStringReplyAsync,
+ falsyResponseToErrorAsync(
+ new Error(errorMsg ? errorMsg : "Error setting key value pair on redis")
+ )
);
export const deleteTask = (
- redisClient: RedisClient,
+ redisClient: redis.RedisClientType | redis.RedisClusterType,
key: string
): TE.TaskEither =>
pipe(
- TE.tryCatch(
- () =>
- new Promise>(resolve =>
- redisClient.del(key, (err, response) =>
- resolve(
- falsyResponseToError(
- integerReply(err, response),
- new Error("Error deleting key value pair on redis")
- )
- )
- )
- ),
- E.toError
- ),
- TE.chain(TE.fromEither)
+ TE.tryCatch(() => redisClient.del(key), E.toError),
+ integerReplyAsync()
);
export const getTask = (
- redisClient: RedisClient,
+ redisClient: redis.RedisClientType | redis.RedisClusterType,
key: string
): TE.TaskEither> =>
pipe(
- TE.tryCatch(
- () =>
- new Promise>>(resolve =>
- redisClient.get(key, (err, response) =>
- resolve(singleValueReply(err, response))
- )
- ),
- E.toError
- ),
- TE.chain(TE.fromEither)
+ TE.tryCatch(() => redisClient.get(key), E.toError),
+ singleValueReplyAsync
);
export const existsKeyTask = (
- redisClient: RedisClient,
+ redisClient: redis.RedisClientType | redis.RedisClusterType,
key: string
): TE.TaskEither =>
pipe(
- TE.tryCatch(
- () =>
- new Promise>(resolve =>
- redisClient.exists(key, (err, response) =>
- resolve(integerReply(err, response, 1))
- )
- ),
- E.toError
- ),
- TE.chain(TE.fromEither)
+ TE.tryCatch(() => redisClient.exists(key), E.toError),
+ integerReplyAsync(1)
);
export const pingTask = (
- redisClient: RedisClient
-): TE.TaskEither =>
+ redisClient: redis.RedisClientType
+): TE.TaskEither =>
pipe(
- TE.tryCatch(
- () =>
- new Promise>(resolve =>
- redisClient.ping("ping message", (err, response) =>
- resolve(
- falsyResponseToError(
- givenStringReply(err, response, "ping message"),
- new Error("Error while pinging redis")
- )
- )
- )
- ),
- E.toError
- ),
- TE.chain(TE.fromEither)
+ TE.tryCatch(() => redisClient.ping(), E.toError),
+ givenStringReplyAsync("PONG")
);
diff --git a/yarn.lock b/yarn.lock
index 20470e85..60199ae5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1915,13 +1915,13 @@
eslint-plugin-sonarjs "^0.5.0"
prettier "^2.1.2"
-"@pagopa/io-spid-commons@^12.0.1":
- version "12.0.1"
- resolved "https://registry.yarnpkg.com/@pagopa/io-spid-commons/-/io-spid-commons-12.0.1.tgz#a4bc0e555377df60a39eb17ef3c2d7d44fa5ad54"
- integrity sha512-oMWr+NVVN6/SW1hcxj02fY32oFJdf1lgIj/7GREG5+lPaGrKDjBOLsRtJs+He82h9dVuyXeElkpgjL5ZYf07Lg==
+"@pagopa/io-spid-commons@^13.2.2":
+ version "13.2.2"
+ resolved "https://registry.yarnpkg.com/@pagopa/io-spid-commons/-/io-spid-commons-13.2.2.tgz#55c233abd70d3d49ea6d3e58864211803df7afcb"
+ integrity sha512-IzcIy5KBFB58aBh7yd+Qyoek0IG+YVNpZycpU1KeIZ53EgW6YPB9yIFGXziNtJY3z38V+3J0XL/b2Yn6bMTrDQ==
dependencies:
"@pagopa/ts-commons" "^12.0.0"
- "@types/redis" "^2.8.32"
+ "@xmldom/xmldom" "^0.8.7"
date-fns "^1.30.1"
fp-ts "2.14.0"
io-ts "2.2.20"
@@ -1931,12 +1931,11 @@
node-forge "^1.0.0"
passport "^0.6.0"
passport-saml "1.3.5"
- redis "^3.1.2"
+ redis "^4.5.1"
semver "^7.3.7"
winston "^3.0.0"
xml-crypto "^1.4.0"
xml2js "^0.4.23"
- xmldom "^0.6.0"
yargs "^15.3.0"
"@pagopa/openapi-codegen-ts@^10.0.6":
@@ -1983,6 +1982,40 @@
semver "^7.3.7"
validator "^13.7.0"
+"@redis/bloom@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.1.0.tgz#64e310ddee72010676e14296076329e594a1f6c7"
+ integrity sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==
+
+"@redis/client@1.4.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.4.2.tgz#2a3f5e98bc33b7b979390442e6e08f96e57fabdd"
+ integrity sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==
+ dependencies:
+ cluster-key-slot "1.1.1"
+ generic-pool "3.9.0"
+ yallist "4.0.0"
+
+"@redis/graph@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@redis/graph/-/graph-1.1.0.tgz#cc2b82e5141a29ada2cce7d267a6b74baa6dd519"
+ integrity sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==
+
+"@redis/json@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@redis/json/-/json-1.0.4.tgz#f372b5f93324e6ffb7f16aadcbcb4e5c3d39bda1"
+ integrity sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==
+
+"@redis/search@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.1.0.tgz#7abb18d431f27ceafe6bcb4dd83a3fa67e9ab4df"
+ integrity sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==
+
+"@redis/time-series@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.4.tgz#af85eb080f6934580e4d3b58046026b6c2b18717"
+ integrity sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==
+
"@types/babel__core@^7.1.0":
version "7.20.0"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891"
@@ -2181,13 +2214,6 @@
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
-"@types/redis@^2.8.32":
- version "2.8.32"
- resolved "https://registry.yarnpkg.com/@types/redis/-/redis-2.8.32.tgz#1d3430219afbee10f8cfa389dad2571a05ecfb11"
- integrity sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==
- dependencies:
- "@types/node" "*"
-
"@types/request-ip@0.0.35":
version "0.0.35"
resolved "https://registry.yarnpkg.com/@types/request-ip/-/request-ip-0.0.35.tgz#c30e832533296151c221532c48c10591b7edd468"
@@ -2365,6 +2391,11 @@
"@typescript-eslint/types" "4.33.0"
eslint-visitor-keys "^2.0.0"
+"@xmldom/xmldom@^0.8.7":
+ version "0.8.10"
+ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
+ integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
+
a-sync-waterfall@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7"
@@ -3123,10 +3154,10 @@ cls-hooked@^4.2.2:
emitter-listener "^1.0.1"
semver "^5.4.1"
-cluster-key-slot@^1.0.5:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d"
- integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==
+cluster-key-slot@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz#10ccb9ded0729464b6d2e7d714b100a2d1259d43"
+ integrity sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==
co@^4.6.0:
version "4.6.0"
@@ -3516,16 +3547,6 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
-denque@^1.1.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de"
- integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==
-
-denque@^1.5.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf"
- integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==
-
depd@^1.1.2, depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
@@ -3607,11 +3628,6 @@ dotenv@^8.2.0:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
-double-ended-queue@^2.1.0-0:
- version "2.1.0-0"
- resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c"
- integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=
-
duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
@@ -4553,6 +4569,11 @@ functions-have-names@^1.2.2:
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+generic-pool@3.9.0:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.9.0.tgz#36f4a678e963f4fdb8707eab050823abc4e8f5e4"
+ integrity sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==
+
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
@@ -7357,60 +7378,17 @@ rechoir@^0.6.2:
dependencies:
resolve "^1.1.6"
-redis-clustr@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/redis-clustr/-/redis-clustr-1.7.0.tgz#803e815ce2b3d87dae619bde530ca9fc04bd36a0"
- integrity sha512-2ymAf9r25Kp/C1X9WhvCtlu3kaH5D/MaUPW0JQ1dddueGzMzK9oOZUsD9yZH/kmc2ss/f89onZYcFHNAfm7WcQ==
- dependencies:
- cluster-key-slot "^1.0.5"
- denque "^1.1.0"
- redis "^2.6.0"
-
-redis-commands@^1.2.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785"
- integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==
-
-redis-commands@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89"
- integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==
-
-redis-errors@^1.0.0, redis-errors@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
- integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==
-
-redis-parser@^2.6.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b"
- integrity sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=
-
-redis-parser@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
- integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==
- dependencies:
- redis-errors "^1.0.0"
-
-redis@^2.6.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02"
- integrity sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==
- dependencies:
- double-ended-queue "^2.1.0-0"
- redis-commands "^1.2.0"
- redis-parser "^2.6.0"
-
-redis@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/redis/-/redis-3.1.2.tgz#766851117e80653d23e0ed536254677ab647638c"
- integrity sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==
+redis@4.5.1, redis@^4.5.1:
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/redis/-/redis-4.5.1.tgz#f5a818970bb2dc5d60540bab41308640604c7d33"
+ integrity sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==
dependencies:
- denque "^1.5.0"
- redis-commands "^1.7.0"
- redis-errors "^1.2.0"
- redis-parser "^3.0.0"
+ "@redis/bloom" "1.1.0"
+ "@redis/client" "1.4.2"
+ "@redis/graph" "1.1.0"
+ "@redis/json" "1.0.4"
+ "@redis/search" "1.1.0"
+ "@redis/time-series" "1.0.4"
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
@@ -9050,6 +9028,11 @@ y18n@^4.0.0:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+yallist@4.0.0, yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
@@ -9060,11 +9043,6 @@ yallist@^3.0.2:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
yargs-parser@10.x:
version "10.1.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"