Koha-clms/C4
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
..
AuthoritiesMarc
…
Barcodes
…
ClassSortRoutine
…
Creators Bug 14143 - Patron cards: Crash (confusion between table names creator_templates and club_template_enrollment_fields) 2017-04-28 08:39:41 -04:00
External
…
Form
…
Heading
…
ILSDI Bug 19935: Replace GetPendingIssues - ILSDI 2018-04-03 11:43:37 -03:00
Installer Bug 20402: Implement OAuth2 authentication for REST API 2018-05-08 15:55:42 -03:00
Labels Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
Linker
…
Members Bug 20444: Remove sub GetAttributes 2018-05-03 13:26:49 -03:00
OAI Bug 18601: OAI/Sets.t mangles data due to truncate in ModOAISetsBiblios 2017-06-13 16:18:59 -03:00
Output
…
Patroncards Bug 18550: [Follow-up] Add POD descriptions to subs 2017-10-06 12:09:55 -03:00
Reports Bug 20663: Add some POD, so koha test tools don't complain 2018-05-04 09:19:26 -03:00
SIP Bug 18625: (QA follow-up) Simplify update_lastseen 2018-04-11 16:45:19 -03:00
Search
…
Serials Bug 20144: [sql_modes] Add default value for subscription_numberpatterns.description in tests 2018-02-13 13:58:53 -03:00
Utils Bug 20455: Fix sort patrons by date expired 2018-03-28 15:25:46 -03:00
Accounts.pm Bug 20603: Remove ModNote, getcredits and getrefunds from C4::Accounts 2018-04-20 12:24:00 -03:00
Acquisition.pm Bug 17457: Adv. Acquisition search with ISBN variations 2018-03-23 11:45:38 -03:00
Auth.pm Bug 20284: (QA follow-up) superlibrarian has ill permissions 2018-05-07 11:55:01 -03:00
Auth_cas_servers.yaml.sample
…
Auth_with_cas.pm Bug 19160: Add POD 2018-03-23 11:45:38 -03:00
Auth_with_ldap.pm Bug 14625 - LDAP: skip extended patron attributes in 'borrowers' attribute update 2017-05-19 09:52:05 -04:00
Auth_with_shibboleth.pm Bug 12026: [QA Follow-up] Fix a POD line 2017-03-31 14:28:18 +00:00
AuthoritiesMarc.pm Bug 14769: (Follow-up) Reduce number of preference parses 2018-04-12 10:50:35 -03:00
BackgroundJob.pm
…
Barcodes.pm
…
Biblio.pm Bug 9701: Configure default indicator 2018-04-12 10:50:34 -03:00
Bookseller.pm Bug 14535: Update the supplier filter too 2017-03-31 12:38:44 +00:00
Boolean.pm
…
Breeding.pm Bug 19096: Make Default authoritative in core modules 2017-12-07 14:44:15 -03:00
Budgets.pm Bug 18999: Modified SQL query in GetBudgetSpent() in C4/Budgets.pm 2017-09-29 13:03:38 -03:00
Calendar.pm Bug 14572 - insert_single_holiday() forces a value on an AUTO_INCREMENT column, during an INSERT 2017-07-06 14:29:04 -03:00
Charset.pm Bug 18910: Revert "Bug 18152 : fix unimarc label in SetMarcUnicodeFlag" 2017-07-26 14:01:51 -03:00
Circulation.pm Bug 19204: Make the debarment date calculation depends on finesCalendar 2018-04-25 10:52:20 -03:00
ClassSortRoutine.pm
…
ClassSource.pm Bug 17208: Checking if classification source or filing rule already exists before adding 2016-12-23 11:33:48 +00:00
Context.pm Bug 18674: TZ error handling 2018-04-11 16:45:08 -03:00
Contract.pm
…
CourseReserves.pm Bug 18276: Remove GetBiblioFromItemNumber - Course reserves 2017-07-10 12:09:24 -03:00
Creators.pm
…
Debug.pm
…
HTML5Media.pm Bug 17501: Remove Koha::Upload::get from Koha::Upload 2017-01-20 14:20:05 +00:00
Heading.pm
…
HoldsQueue.pm Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
Images.pm
…
ImportBatch.pm Bug 20144: [sql_modes] Set import_records.marcxml_old to '' on INSERT 2018-02-13 13:58:54 -03:00
ImportExportFramework.pm
…
InstallAuth.pm Bug 19514: Add client-side check 2017-12-14 16:58:13 -03:00
Installer.pm Bug 14826: account_offset_types.sql is not in the mandatory subdir 2017-10-20 18:14:06 -03:00
ItemCirculationAlertPreference.pm
…
Items.pm Bug 18816: (QA follow-up) Framework parameter is not needed 2018-04-06 14:51:37 -03:00
Koha.pm Bug 19096: Make Default authoritative in core modules 2017-12-07 14:44:15 -03:00
Labels.pm
…
Languages.pm Bug 20115: Set the languages order with the pref values 2018-04-04 15:45:43 -03:00
Letters.pm Bug 19855: Move getalert, addalert and delalert to Koha::Subscription 2018-04-23 14:22:15 -03:00
Linker.pm
…
Log.pm Bug 19528: Fix a few typos like corrosponding 2017-10-27 14:09:04 -03:00
MarcModificationTemplates.pm Bug 20144: [sql_modes] Set default value for marc_modification_template_actions 2018-02-13 13:58:55 -03:00
Matcher.pm Bug 18131: Followup - Use data if biblionumber_tag < 10 2017-11-26 12:59:51 -03:00
Members.pm Bug 20590: Improve Koha::Exceptions in string context 2018-04-19 12:46:04 -03:00
Message.pm
…
NewsChannels.pm Bug 19528: Fix a few typos like corrosponding 2017-10-27 14:09:04 -03:00
Output.pm Bug 20422: Fix warning on uri_escape_utf8 in Output.pm 2018-03-26 17:31:13 -03:00
Overdues.pm Bug 10021: Drop columns notify_id and notify_level from accountlines 2017-12-11 11:34:18 -03:00
Patroncards.pm
…
Print.pm
…
Record.pm Bug 20097: Use same regex in marc2dcxml and opac-export 2018-03-19 12:23:19 -03:00
Reports.pm
…
Reserves.pm Bug 19301: Remove C4::Reserves::OnShelfHoldsAllowed 2018-02-13 13:36:00 -03:00
Ris.pm Bug 10306: Core module changes for multiple mappings 2017-12-07 14:44:15 -03:00
RotatingCollections.pm
…
SMS.pm Bug 19134: C4::SMS falils on long driver name 2017-08-25 10:51:24 -03:00
Scheduler.pm
…
Scrubber.pm
…
Search.pm Bug 19873: (QA follow-up) Prevent warnings 2018-04-20 13:34:41 -03:00
Serials.pm Bug 20144: [sql_modes] Set subscription.numberlength and weeklength to NULL if not passed 2018-02-13 13:59:01 -03:00
Service.pm Bug 7550: [QA Follow-up] Resolve param warning from sco-patron-image 2017-05-08 09:00:26 -04:00
ShelfBrowser.pm Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
SocialData.pm
…
Stats.pm Bug 20510: Remove unused sub TotalPaid from C4::Stats 2018-04-05 14:17:36 -03:00
Suggestions.pm Bug 13287: (QA follow-up) Extend Suggestions.t for DelSuggestionsOlderThan 2018-02-26 13:24:45 -03:00
TTParser.pm
…
Tags.pm
…
Templates.pm Bug 20538: Remove the need of writing [% KOHA_VERSION %] everywhere 2018-04-13 11:49:44 -03:00
TmplToken.pm
…
TmplTokenType.pm
…
UsageStats.pm Bug 20264: Remove syspref checkdigit 2018-03-23 11:45:38 -03:00
XISBN.pm Bug 20321: Remove get_biblionumber_from_isbn 2018-03-19 13:55:47 -03:00
XSLT.pm Bug 18921: Resolve a few warnings in C4/XSLT.pm 2017-09-07 14:34:42 -03:00