]> git.koha-community.org Git - koha.git/commit
Bug 34163: Handle both anonymous userenv when generating CSRF tokens
authorDavid Cook <dcook@prosentient.com.au>
Fri, 30 Jun 2023 02:50:17 +0000 (02:50 +0000)
committerMatt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Fri, 15 Sep 2023 10:19:53 +0000 (10:19 +0000)
commitb3303107a4b6b025d6775ce3736a285952e3ac31
tree583de96586012df4da4d993101c0db938295199d
parent0dfb03d27551a4ade1bd6e6f6c0ac86b2a28a2c2
Bug 34163: Handle both anonymous userenv when generating CSRF tokens

An anonymous session might have a userenv which is undef or which is
a hashref of undef/empty values.

This patch generates the "anonymous" prefix for undef/empty 'id'
values, which prevents CSRF errors when logging in via OAuth2/OIDC
following a Koha logout.

Test plan:
Before applying patch:
1. Go to https://wiki.koha-community.org/wiki/Testing_SSO
2. Set up OpenID Connect realm, user, client, and Koha
integration to Keycloak for koha-testing-docker as noted in the wiki

3. Go to http://localhost:8080/cgi-bin/koha/opac-main.pl?logout.x=1
4. Click on OIDC "Log in with XXXX" button and log into IDP
5. Note that you're not logged in and you instead see an error message like:
"There was an error authenticating to external identity provider wrong_csrf_token"

6. Apply patch
7. Go to "Sessions" section of the test realm in Keycloak
e.g. http://sso:8082/auth/admin/master/console/#/test/sessions
8. Click "Action" on the far right side of the screen
9. Choose "Sign out all active sessions"

After applying patch:
10. koha-plack --restart kohadev
11. Go to http://localhost:8080/cgi-bin/koha/opac-main.pl?logout.x=1
12. Click on OIDC "Log in with XXXX" button and log into IDP
13. Note that you're logged in

14. prove t/Token.t
15. Note all tests pass

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit f965db69f1b1aaa0afaf7a3a48723f7e87c5b32c)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
(cherry picked from commit bde32f49272fe74f89e785cdc68c9b362d54bc24)
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Koha/Token.pm
t/Token.t