Skip to main content

Extension to allow paswordless login to the CKAN API

Project description

CKAN Passwordless API

Extension to allow paswordless login to the CKAN API.

Documentation: https://envidat.gitlab-pages.wsl.ch/ckanext-passwordless_api/

Source Code: https://gitlabext.wsl.ch/EnviDat/ckanext-passwordless_api


This plugin is primarily intended for custom frontends built on the CKAN API.

By using API tokens from CKAN core (>2.9), this plugin provides an authentication flow where:

  1. Users receive a login token via email (via reset key in core).
  2. API token is returned on valid login token (reset key) submission.
  3. The API token should then be included in Authorization headers from the frontend --> CKAN calls.

Based on work by @espona (Lucia Espona Pernas) for ckanext-passwordless (https://github.com/EnviDat/ckanext-passwordless).

Config

Optional variables can be set in your ckan.ini:

  • passwordless_api.guidelines_url Description: A link to your website guidelines. Default: None, not included.
  • passwordless_api.policies_url Description: A link to your website policies. Default: None, not included.
  • passwordless_api.welcome_template Description: Path to welcome template to render as html email. Default: uses default template.
  • passwordless_api.reset_key_template Description: Path to reset key template to render as html email Default: uses default template.
  • passwordless_api.cookie_name Description: Set to place the API token in a cookie, with given name. The cookie will default to secure, httpOnly, samesite: Lax. Default: None, no cookie used.
  • passwordless_api.cookie_domain Description: The domain for samesite to respect, required if cookie set. Default: None.
  • passwordless_api.cookie_samesite Description: To change the cookie samesite value to Strict. Only enable this if you know what you are doing. Default: None, samesite value is set to Lax.
  • passwordless_api.cookie_http_only Description: Use a httpOnly cookie, recommended. Default: true.

Endpoints

POST

  • <CKAN_HOST>/api/3/action/passwordless_request_reset_key
    • Description: Request a login token for a given email.
    • Creates user if they do not exist & sends welcome email.
    • Param1: email (str).
  • <CKAN_HOST>/api/3/action/passwordless_request_api_token
    • Description: Request an API token, given the email and login token (reset_key).
    • Param1: email (str).
    • Param2: key (str).
  • <CKAN_HOST>/api/3/action/passwordless_revoke_api_token
    • Description: Revoke an API token.
    • Param1: token (str).

GET

  • <CKAN_HOST>/api/3/action/passwordless_get_user
    • Description: Get user details, given their API token. Also resets and returns a new API token (i.e. renewal).

Notes

  • It is also recommended to disable access to the API via cookie, to help prevent CSRF: ckan.auth.disable_cookie_auth_in_api = true
  • The configuration for API tokens can be configured in core:
api_token.nbytes = 60
api_token.jwt.decode.secret = string:YOUR_SUPER_SECRET_STRING
api_token.jwt.algorithm = HS256

# expire_api_token plugin (unit = 1 day in seconds, lifetime = 3 days)
expire_api_token.default_lifetime = 3
expire_api_token.default_unit = 86400

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ckanext-passwordless-api-0.2.1.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

ckanext_passwordless_api-0.2.1-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file ckanext-passwordless-api-0.2.1.tar.gz.

File metadata

File hashes

Hashes for ckanext-passwordless-api-0.2.1.tar.gz
Algorithm Hash digest
SHA256 d721f23370d97b8686afffc7873c4deb3c943f1838ba668ba1bc4ecb98e92586
MD5 e5daf7c93d8aa85b81dc8d268b9b5326
BLAKE2b-256 4d5dcf4678919ca135c11605f85ed87e1d0a814c11d6d2b5b9531da27a4e9d0b

See more details on using hashes here.

File details

Details for the file ckanext_passwordless_api-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ckanext_passwordless_api-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5bbac30205b0530610c9301c52d3da9d922daac9897300d541fcca5bdbe03b7d
MD5 d84500cea24227bb0a9b30b460969896
BLAKE2b-256 4c82c2566256298ffc03709c02564523528eec9a2d4fd3e4ab3b999482816061

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page