OpenStack Keystone extension to enable OAuth 2.0.
To install this extension in Keystone, you have to do the following:
-
Place the
oauth2
folder inside thekeystone/contrib
folder in your Keystone project. -
Place the files in
tests/
inside thekeystone/tests
folder in your Keystone project. -
This extension implements an auth plugin. You need to add the
plugins/oauth2.py
module to thekeystone/auth/plugins
folder in your Keystone project.The files inside the
config
folder contain everything you need to add to your Keystone settings files (etc/keystone.conf
andetc/keystone-paste.ini
). If you are an experienced user, you can check those files and skip steps 4-6. Should you prefer to set up everything step by step, please read on. -
Since this extension is augmenting a pipeline (see Keystone docs for more info), a corresponding
filter:
section is necessary to be introduced in youretc/keystone-paste.ini
file. Just place the following:[filter:oauth2_extension] paste.filter_factory = keystone.contrib.oauth2.routers:OAuth2Extension.factory
-
In order for the extension to work, it must be placed in the
pipeline
. -
Edit the
[auth]
section in yourkeystone.conf
file (the one placed in theetc
folder in your Keystone project), to include OAuth 2.0 auth method, just like this:# Default auth methods. (list value) methods=external,password,token,oauth2
At the end of the section you have to add this:
# The oauth2 plugin module (string value) oauth2=keystone.auth.plugins.oauth2.OAuth2
-
Define new policies in your
policy.json
file (the one placed in theetc
folder in your Keystone project) for the following targets:identity:list_authorization_codes identity:revoke_access_token identity:request_authorization_code
The file config/policy.json
contains default values you can use, as well as other required policies which Keystone should include by default.
-
Check Python dependencies. This extension uses OAuthLib, tested to work with versions >=0.7.2, <=1.0.3. This is already a dependency in Keystone and you should not need to install it again, but if you are not using the standard Keystone installation, make sure to add it.
-
Create database tables. Execute:
tools/with_venv.sh keystone-manage db_sync --extension oauth2