Skip to main content

Firefox Accounts support in Kinto

travis Coverage

Kinto-fxa enables authentication in Kinto applications using Firefox Accounts OAuth2 bearer tokens.

N.B. This project used to be called cliquet-fxa, but was renamed to

kinto-fxa following the rename of the cliquet project to kinto.

It provides:

  • An authentication policy class;

  • Integration with Kinto cache backend for token verifications;

  • Integration with Kinto for heartbeat view checks;

  • Some optional endpoints to perform the OAuth dance (optional).

  • Kinto documentation

  • Issue tracker

Installation

As stated in the official documentation, Firefox Accounts OAuth integration is currently limited to Mozilla relying services.

Install the Python package:

pip install kinto-fxa

Include the package in the project configuration:

kinto.includes = kinto_fxa

And configure authentication policy using pyramid_multiauth formalism:

multiauth.policies = fxa
multiauth.policy.fxa.use = kinto_fxa.authentication.FxAOAuthAuthenticationPolicy

By default, it will rely on the cache configured in Kinto.

Configuration

Fill those settings with the values obtained during the application registration:

fxa-oauth.client_id = 89513028159972bc
fxa-oauth.client_secret = 9aced230585cc0aaea0a3467dd800
fxa-oauth.oauth_uri = https://oauth-stable.dev.lcip.org
fxa-oauth.requested_scope = profile kinto
fxa-oauth.required_scope = kinto
fxa-oauth.webapp.authorized_domains = *.firefox.com
# fxa-oauth.cache_ttl_seconds = 300
# fxa-oauth.state.ttl_seconds = 3600

In case the application shall not behave as a relier (a.k.a. OAuth dance endpoints disabled):

fxa-oauth.relier.enabled = false

If necessary, override default values for authentication policy:

# multiauth.policy.fxa.realm = Realm

Login flow

OAuth Bearer token

Use the OAuth token with this header:

Authorization: Bearer <oauth_token>
notes:

If the token is not valid, this will result in a 401 error response.

Obtain token using Web UI

  • Navigate the client to GET /fxa-oauth/login?redirect=http://app-endpoint/#. There, a session cookie will be set, and the client will be redirected to a login form on the FxA content server;

  • After submitting the credentials on the login page, the client will be redirected to http://app-endpoint/#{token} (the web-app).

Obtain token custom flow

The GET /v1/fxa-oauth/params endpoint can be use to get the configuration in order to trade the Firefox Accounts BrowserID with a Bearer Token. See Firefox Account documentation about this behavior

$ http GET http://localhost:8000/v0/fxa-oauth/params -v

GET /v0/fxa-oauth/params HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Host: localhost:8000
User-Agent: HTTPie/0.8.0


HTTP/1.1 200 OK
Content-Length: 103
Content-Type: application/json; charset=UTF-8
Date: Thu, 19 Feb 2015 09:28:37 GMT
Server: waitress

{
    "client_id": "89513028159972bc",
    "oauth_uri": "https://oauth-stable.dev.lcip.org",
    "scope": "profile"
}

Changelog

This document describes changes between each past release.

2.1.0 (2016-09-08)

  • Add the plugin version in the capability.

2.0.0 (2016-05-19)

Breaking changes

  • Project renamed to Kinto-fxa to match the rename of cliquet to kinto.core.

  • Update to kinto.core for compatibility with Kinto 3.0. This release is no longer compatible with Kinto < 3.0, please upgrade!

  • With Kinto > 2.12*, the setting multiauth.policy.fxa.use must now be explicitly set to kinto_fxa.authentication.FxAOAuthAuthenticationPolicy

Bug fixes

  • Fix checking of Authorization header when python is ran -O (ref mozilla-services/cliquet#592)

1.4.0 (2015-10-28)

  • Updated to Cliquet 2.9.0

Breaking changes

  • cliquet-fxa cannot be included using pyramid.includes setting. Use cliquet.includes instead.

1.3.2 (2015-10-22)

Bug fixes

  • In case the Oauth dance is interrupted, return a 408 Request Timeout error instead of the 401 Unauthenticated one. (#11)

  • Do not call cliquet.load_default_settings from cliquet-fxa (#12)

1.3.1 (2015-09-29)

  • Separate multiple scopes by a + in login URL.

1.3.0 (2015-09-29)

Bug fixes

  • Multiple scopes can be requested on the login flow.

  • Multiple scopes can be required for the app.

Configuration changes

  • fxa-oauth.scope is now deprecated. fxa-oauth.requested_scope and fxa-oauth.required_scope should be used instead.

1.2.0 (2015-06-24)

  • Add default settings to define a policy “fxa”. It is now possible to just include cliquet_fxa and add fxa to multiauth.policies setting list.

  • Do not check presence of cliquet cache in initialization phase.

  • Do not use Cliquet logger to prevent initialization errors.

1.1.0 (2015-06-18)

  • Do not prefix authenticated user with fxa_ anymore (#5)

1.0.0 (2015-06-09)

  • Imported code from Cliquet

Contributors

Download files

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

Source Distribution

kinto-fxa-2.1.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kinto_fxa-2.1.0-py2.py3-none-any.whl (17.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file kinto-fxa-2.1.0.tar.gz.

File metadata

  • Download URL: kinto-fxa-2.1.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for kinto-fxa-2.1.0.tar.gz
Algorithm Hash digest
SHA256 2425dc5c33cc469c0da7e71b3d4b5542921abdb8b9314db70b33e9027b9286c1
MD5 563c9eda287eef2ffca5018d5e4fdfc0
BLAKE2b-256 2e06e1765fe8665f54b437cb1aac1b458801d39a6c56697e530dab6af45a543d

See more details on using hashes here.

File details

Details for the file kinto_fxa-2.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for kinto_fxa-2.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c519b628be39c7d112423ee220f7a1e2c2a92de62c5aaf9b760e0386a676c8a6
MD5 e8e4bd4addf95584276652d48aeff7c7
BLAKE2b-256 697be23341a5f48066037b45b2229f33d151ea8b8cdb4d0abd1d03cddf2e94f5

See more details on using hashes here.

Release history Release notifications | RSS feed

2.5.3

2 files

2.5.2

2 files

2.5.1

2 files

2.5.0

2 files

2.4.1

2 files

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

This release

2.1.0 This release

2 files

2.0.0

2 files

1.4.0

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page