OpenConext / OpenConext-myconext

A (guest) IdP for OpenConext
https://eduid.nl/
5 stars 8 forks source link

Workaround for Session Lost error #321

Closed phavekes closed 2 months ago

phavekes commented 2 months ago

This issue is imported from pivotal

On mobile devices, opening the Magic Link in the same browser as where the login was initiated is going to be impossible. (Apps open a browser window but do not switch to the actual browser app and moreover, they don\'t have an editable URL input field so pasting the link is impossible.)

Thijs suggested allowing users to type in the/a secret from the Magic Link mail manually to ensure they can proceed with logging in. Sounds like a good option.

But we need to really carefully consider this both from a technical perspective (esp. security) and from a UX point of view. 1 thing that immediately pops into my mind: where and when can the user "choose" to manually enter the secret? This should be from the "Open your mailbox" screen as that screen is still within the original session. How to do this properly?

Solution proposed by Thijs: Stel gebruiker werkt in Firefox op de desktop. Ze gaat naar de SP, klikt op login, gaat naar EB, gaat naar eduID, vult mailadres in, klikt op Magic Link. Op login.eduid.nl verschijnt een \'spinner\' met tekst: ga jij nu eens even op je link klikken. Ze opent de magic link in Chrome of een in-mail-app of op haar telefoon of waar dan ook. Login.eduid.nl verifieert de code en presenteert scherm: "Inlog geslaagd! Je kunt dit scherm sluiten. Ga terug naar de plek waar je bezig was.". In haar Firefox op de desktop verdwijnt de spinner en de login gaat door met een post van de assertion van eduID naar EB die het doorzet naar de SP, ingelogd!

To prevent a security hole we need to ask for a verification code if a user logs in through a different account.

phavekes commented 2 months ago

The engineblock sesion is still lost in this scenario, so you can\'t login to the SP. https://www.pivotaltracker.com/story/show/169973846 (Peter Havekes - Oct 20, 2020)

phavekes commented 2 months ago

Solution: After requesting a magic link the user is requested to go to his mailbox and a spinner is shown. In the background, the website polls a backend. When the user opens the link in any browser (even on a different device) the original \'spinner\' page continues. The page opened by the email link tells the user to close this page and continue on the previous page.

(Peter Havekes - Jan 18, 2021)

phavekes commented 2 months ago

What if the link in the email is opened by a program instead of a user; eg. anti-virus or malware-detection (Peter Havekes - Jan 18, 2021)

phavekes commented 2 months ago
@okkeh Volgens mij gaat er iets mis.

1) Ik open eduID in new private window en vraag daar magic link aan 2) ik klik in mailclient op de magic link, die opent in dezelfde browser maar niet in private window 3) ik zie een SURFconext session lost error in dat window 4) in het oorspronkelijke (private) window staat Login succeeded!

You can close this tab / window.

3) zou een melding moeten tonen: login succeeded, return to original window, close this one 4) zou moeten tonen: login succeeded, click here to proceed to

Firefox laatste versie, MacOS laatste versie. (Arnout Terpstra - Feb 2, 2021)

phavekes commented 2 months ago
@arnoutt Heb je wellicht op de test omgeving getest in plaats van de test2 omgeving? Of je moet een harde refresh doen vanwege JS cache? Ik heb dit best goed getest namelijk. (Okke Harsta - Feb 2, 2021)
phavekes commented 2 months ago
@okkeh je hebt helemaal gelijk, cache geleegd, werkt nu zoals bedoeld! (Arnout Terpstra - Feb 2, 2021)
phavekes commented 2 months ago

Er staat een spatie na de code in de email, dat kan problemen geven bij knip-en-plak, of geeft in ieder geval twijfel bij de gebruiker (Peter Havekes - Feb 4, 2021)

phavekes commented 2 months ago

edge-case: Bij mij gaat het fout als:

Verwacht resultaat -> PC browser geeft aan dat ik ben ingelogd, en het verster kan sluiten, en telefoon-browser gaat door Resultaat -> Telefoon geeft aan \'Inloggen geslaagd, venster sluiten, pc-browser geeft \'session lost\'.

(edit) Het lijkt altijd fout te gaan als de link (Peter Havekes - Feb 4, 2021)

phavekes commented 2 months ago
@phavekes https://github.com/OpenConext/OpenConext-myconext/commit/762ef0dd203799bb623e2b5f2a598c0adfdf1261 (Okke Harsta - Feb 4, 2021)
phavekes commented 2 months ago
@phavekes The session lost is from EB, right? (Okke Harsta - Feb 4, 2021)
phavekes commented 2 months ago

Yes. Left is already logged in \'default browser\', right is new login in new browser (Peter Havekes - Feb 4, 2021)

phavekes commented 2 months ago

I think this is soo edgy, that we should not write (complex) code to remedy this situation. But that is of course not up to me😄 (Okke Harsta - Feb 4, 2021)

phavekes commented 2 months ago

This is not edgy. e.g. it will happen if the user does not receive private emails on his corporate mobile device. Or when a user is already logged in in hid default browser, but unknowingly starts a new session in an other browser.

Could you make an estimate how much time will be needed to detect and fix this case? (Peter Havekes - Feb 8, 2021)

phavekes commented 2 months ago

Fixed in https://github.com/OpenConext/OpenConext-myconext/commit/1c4ed053001ce23a4bf76b3fd0bcdb48e98d66a1 (Okke Harsta - Feb 10, 2021)