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"