Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tentativo di gestire più IdP #5

Closed
bernardini687 opened this issue Mar 18, 2024 · 5 comments
Closed

tentativo di gestire più IdP #5

bernardini687 opened this issue Mar 18, 2024 · 5 comments

Comments

@bernardini687
Copy link
Contributor

ciao!

sto tentando di gestire due diversi IdP offerti da spid-saml-check (https://localhost:8443 e https://localhost:8443/demo).
ho inserito entrambi i metadata degli IdP in un singolo registro xml e provando a chiamare strategy.getIDPS() li vedo parsati correttamente.

per scegliere l'IdP dalla chiamata di login ho implementato getIDPEntityIdFromRequest() in questo modo:

function getIDPEntityIdFromRequest(expressRequest) {
  const entityID = expressRequest.query?.entityID;

  if (entityID && IDP_ENTITY_IDS.includes(entityID)) {
    console.log(`Chosen IdP: "${entityID}"`);
    return entityID;
  }

  console.log(`Unkown IdP: "${entityID}"`);
  console.log(`Defaulting to: "${TEST_IDP}"`);
  return TEST_IDP;
}

il problema che sto incontrando è nella callback che avviene dopo il login con l'IdP https://localhost:8443/demo poiché mi sembra di capire che anche durante la callback viene chiamata la funzione sopra, questa volta senza parametro nella query e quindi, facendo default a un altro IdP, ottengo l'errore: Invalid Issuer "https://localhost:8443/demo".
non riesco a trovare una soluzione su come, nella callback, poter risalire all'IdP verso cui è stata originata la richiesta 🤔

ringrazio in anticipo per qualsiasi delucidazione in merito, sono alle prime armi con l'integrazione di SPID e questa mi è sembrata la libreria più user-friendly tra le altre in JS, ottimo lavoro!

@random42
Copy link
Owner

Ciao, dovrei averlo fixato, prova a scaricare l'ultima versione 2.0.1

@bernardini687
Copy link
Contributor Author

Ciao! Grazie mille.
Ho provato, ottengo un errore diverso: Invalid NameQualifier "https://localhost:8443/demo".

Questi i log delle richieste e dell'errore, se possono essere d'aiuto:

{
  path: '/login',
  query: { entityID: 'https://localhost:8443/demo' }
}
Chosen IdP: "https://localhost:8443/demo"
{
  path: '/login/cb',
  query: {}
}
Unkown IdP: "undefined"
Defaulting to: "https://localhost:8443"
AssertionError [ERR_ASSERTION]: Invalid NameQualifier "https://localhost:8443/demo"
    at SpidResponse.validate (/Users/condense/work/enpam/spid-poc-express/node_modules/passport-spid/dist/src/response.js:104:26)
    at SpidSAML.<anonymous> (/Users/condense/work/enpam/spid-poc-express/node_modules/passport-spid/dist/src/saml.js:72:17)
    at Generator.next (<anonymous>)
    at fulfilled (/Users/condense/work/enpam/spid-poc-express/node_modules/passport-spid/dist/src/saml.js:5:58)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: 'https://localhost:8443/demo',
  expected: 'https://localhost:8443',
  operator: 'strictEqual'
}

@bernardini687
Copy link
Contributor Author

Forse ho trovato il problema, sono riuscito a superare tutte le assertion così, ma lascio verificare a te: #7

@random42
Copy link
Owner

Grazie, pubblicato 2.0.2, fammi sapere.

@bernardini687
Copy link
Contributor Author

bernardini687 commented Mar 19, 2024

a posto, chiudo la issue.
grazie ancora!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants