Koha-clms/misc
Julian Maurice 43a4b3c22c Bug 20402: Implement OAuth2 authentication for REST API
It implements only the "client credentials" flow with no scopes
support. API clients are tied to an existing patron and have the same
permissions as the patron they are tied to.
API Clients are defined in $KOHA_CONF.

Test plan:
0. Install Net::OAuth2::AuthorizationServer 0.16
1. In $KOHA_CONF, add an <api_client> element under <config>:
     <api_client>
       <client_id>$CLIENT_ID</client_id>
       <client_secret>$CLIENT_SECRET</client_secret>
       <patron_id>X</patron_id> <!-- X is an existing borrowernumber -->
     </api_client>
2. Apply patch, run updatedatabase.pl and reload starman
3. Install Firefox extension RESTer [1]
4. In RESTer, go to "Authorization" tab and create a new OAuth2
   configuration:
   - OAuth flow: Client credentials
   - Access Token Request Method: POST
   - Access Token Request Endpoint: http://$KOHA_URL/api/v1/oauth/token
   - Access Token Request Client Authentication: Credentials in request
     body
   - Client ID: $CLIENT_ID
   - Client Secret: $CLIENT_SECRET
5. Click on the newly created configuration to generate a new token
   (which will be valid only for an hour)
6. In RESTer, set HTTP method to GET and url to
   http://$KOHA_URL/api/v1/patrons then click on SEND
   If patron X has permission 'borrowers', it should return 200 OK
   with the list of patrons
   Otherwise it should return 403 with the list of required permissions
   (Please test both cases)
7. Wait an hour (or run the following SQL query:
   UPDATE oauth_access_tokens SET expires = 0) and repeat step 6.
   You should have a 403 Forbidden status, and the token must have been
   removed from the database.
8. Create a bunch of tokens using RESTer, make some of them expires
   using the previous SQL query, and run the following command:
     misc/cronjobs/cleanup_database.pl --oauth-tokens
   Verify that expired tokens were removed, and that the others are
   still there
9. prove t/db_dependent/api/v1/oauth.t

[1] https://addons.mozilla.org/en-US/firefox/addon/rester/

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2018-05-08 15:55:42 -03:00
..
admin
…
bin
…
cronjobs Bug 20402: Implement OAuth2 authentication for REST API 2018-05-08 15:55:42 -03:00
devel Bug 20580: Make create_superlibrarian.pl accept parameters 2018-04-20 12:24:00 -03:00
interface_customization Bug 18739 - Add SVG version of staff-home-icons-sprite image 2017-09-19 11:47:32 -03:00
load_testing Bug 17829: Move GetMember to Koha::Patron 2017-07-10 13:14:19 -03:00
maintenance Bug 19454: (QA follow-up) Fix selection on categorycode 2018-03-23 11:45:38 -03:00
migration_tools Bug 11936: (QA follow-up) Consistent log message for item insert 2018-03-19 13:55:54 -03:00
plack Bug 16520: Allow per-VirtualHost environment variables with Plack 2016-10-11 12:49:42 +00:00
release_notes Add release notes for Koha 17.11 2017-11-28 14:52:13 -03:00
search_tools Bug 17372: Standardize Elasticsearch paths 2016-10-11 01:07:03 +00:00
translator Translation updates for Koha 17.11.00 2017-11-27 14:24:06 -03:00
batchCompareMARCvsFrameworks.pl
…
batchDeleteUnusedSubfields.pl
…
batchImportMARCWithBiblionumbers.pl
…
batchRebuildBiblioTables.pl Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
batchRebuildItemsTables.pl Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
batchRepairMissingBiblionumbers.pl Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
batchdeletebiblios.pl
…
check_sysprefs.pl
…
commit_file.pl
…
export_borrowers.pl Bug 17829: Move GetMember to Koha::Patron 2017-07-10 13:14:19 -03:00
export_records.pl Bug 19730: (follow-up bug 17196) Use biblio_metadata.timestamp in export_records.pl 2018-02-02 12:08:42 -03:00
exportauth.pl
…
import_patrons.pl Bug 12598: Fix POD 2018-02-16 14:05:18 -03:00
koha-install-log Bug 18920: Save DB_USE_TLS and FONT_DIR to install log 2017-10-27 16:07:15 -03:00
kohalib.pl
…
link_bibs_to_authorities.pl Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
mod_zebraqueue.pl
…
perlmodule_ls.pl
…
perlmodule_rm.pl
…
recreateIssueStatistics.pl
…
sax_parser_print.pl Bug 17626 (QA followup) 2016-11-22 11:29:07 +00:00
sax_parser_test.pl
…
sip_cli_emulator.pl Bug 16757 - Add support for Fee Paid to SIP cli emulator for testing 2017-03-31 13:56:37 +00:00
stage_file.pl Bug 19049: Fix regression on stage-marc-import with to_marc plugin 2017-08-15 12:17:41 -03:00