Bug 30962: REST API: Add endpoint /auth/password/validation
authorDavid Cook <dcook@prosentient.com.au>
Fri, 17 Jun 2022 04:43:44 +0000 (04:43 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Fri, 3 Feb 2023 13:30:11 +0000 (10:30 -0300)
commita8a356404c197e45eedc6c01847cf1811a1cc037
tree18dd48116f5df71e9c576a25070332c32dd29e1c
parent410b9ee35f29d9065425036dfd8099ba28911170
Bug 30962: REST API: Add endpoint /auth/password/validation

This patch adds an endpoint for /auth/password/validation

This allows a third-party, using an authenticated and authorized Koha
API user, to check if the username and password given by a user is
correct in Koha.

For example, a Keycloak extension can be created using its
User Storage SPI to use Koha as the user database for Keycloak. This
API allows us to authenticate the user as a particular Koha user - without
creating a Koha user session for them.

Test plan:
0. Apply patch and koha-plack --restart kohadev
1. Go to http://localhost:8081/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=RESTBasicAuth
2. Enable "RESTBasicAuth"
3. Run the following commands while substituting correct values for <koha_user> and <koha_password>
3. curl -XPOST -H "Content-Type: application/json" -u <koha_user>:<koha_password> http://localhost:8081/api/v1/auth/password/validation -d '{ "username": "<koha_username">, "password": "<koha_password>" }' -v
4. Note "204 No Content" response
5. curl -XPOST -H "Content-Type: application/json" -u <koha_user>:<koha_password> http://localhost:8081/api/v1/auth/password/validation -d '{ "username": "<koha_username">, "password": "this is definitely not the password" }' -v
6. Note "400 Bad Request" response and error message {"error":"Validation failed"}

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Koha/REST/V1/Auth/Password.pm [new file with mode: 0644]
api/v1/swagger/paths/auth.yaml
api/v1/swagger/swagger.yaml