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

internal-collabPersonId moet gebruikt worden om token op te zoeken #398

Open
phavekes opened this issue Nov 30, 2024 · 1 comment
Open

Comments

@phavekes
Copy link
Member

This issue is imported from pivotal - Originaly created at May 24, 2022 by Thijs Kinkhorst

Vanaf versie EB 6.7 stuurt Engineblock het urn:collab:person nameId in het attribuut internal-CollabPersonId. SA-GW moet dit attribuut gebruiken om de gebruiker te herkennen, maar doet dat nog op basis van het NameID wat nu verschillende formaten kan hebben afhankelijk van wat de eind-SP nodig heeft.

SA-GW zet wel de correcte values in de uitgaande assertiion. Het zoekt echter de tokens op bv op basis van de transient nameid en vindt dan begrijpelijkerwijs niets.

Om het probleem te reproduceren:

  • Heb EB 6.7+
  • Log in op RA met een account dat minstens een gevet token heeft op loa3: token wordt gevraagd en na presentatie ben je ingelogd op RA
  • Configureer RA met NameIdFormat=transient in Manage, push
  • Log in op RA met een account dat minstens een gevet token heeft op loa3: token wordt niet gevraagd maar sa-gw stuurt een response naar RA met NoAuthnContext SAML error.

(NB: ook na het fixen van deze bug werkt RA niet met een transient NameID, dat klopt, maar het token wordt dan wel gevraagd en een in principe correcte assertion wordt gestuurd.)

Mogelijke oorzaak/fix?: https://github.com/OpenConext/Stepup-Gateway/blob/develop/docs/GatewayState.md

public function saveAssertion(Assertion $assertion)
{
// we pluck the NameId to make it easier to access it without having to reconstitute the assertion
$nameId = $assertion->getNameId();
if (!is_null($nameId->value)) {
$this->stateHandler->saveIdentityNameId($nameId->value);
}

Vermoedelijk moet hier als internal-CollabPersonId aanwezig is deze gebruiken, anders de huidige aanpak.

Estimation: 3h

@phavekes
Copy link
Member Author

Heldere beschrijving! En de voorgestelde oplossing is in mijn ogen inderdaad de plek om het probleem op te lossen. Ik heb de andere locaties waar ->getNameId op een assertion wordt aangeroepen ook nog bekeken. Daar lijkt het probleem niet te spelen. Zover ik het kon beredeneren is het juist goed om daar met het NameId te werken en niet het eb internalCollabPersonId attribuut daar te gebruiken.

Testmogelijkheid in: https://github.com/OpenConext/Stepup-Gateway/blob/68f4fc003ce65602296eaada085b63f21ec60282/src/Surfnet/StepupGateway/GatewayBundle/Tests/Service/Gateway/ConsumeAssertionServiceTest.php (Michiel Kodde - May 25, 2022)

@phavekes phavekes removed their assignment Nov 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: New
Development

No branches or pull requests

1 participant