Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Python Shell

Redirect on 303 in SAML plugin

The SAML plugin handles redirects in a custom manner but currently only
checks for the 302 redirect code. This doesn't cover the mod_auth_mellon
case which responds with a 303.

Also handle the 303 redirect case.

Change-Id: Idab5f381fcbfb8c561184845d3aa5c8aab142ecd
Closes-Bug: #1501918
latest commit 9cd71c064c
@jamielennox jamielennox authored
Failed to load latest commit information.
doc Identity plugin thread safety
examples/pki Revert "Remove keystoneclient.middleware"
keystoneclient Redirect on 303 in SAML plugin
python-keystoneclient/locale Move pot file for traslation
tools Use oslo_debug_helper and remove our own version
.coveragerc Change ignore-errors to ignore_errors
.gitignore Fix auth_token middleware test invalid cross-device link issue
.gitreview Added in common test, venv and gitreview stuff.
.mailmap Add mailmap entry
.testr.conf Create functional test base
CONTRIBUTING.rst Workflow documentation is now in infra-manual
HACKING.rst Make HACKING.rst DRYer and turn into rst file
LICENSE Initial commit. Migrate to pbr.
README.rst Add version/downloads links/badges into README.rst
babel.cfg enabling i18n with Babel
bandit.yaml tox env for Bandit
openstack-common.conf Use oslo.utils and oslo.serialization
requirements.txt Updated from global requirements Create functional test base
setup.cfg Move pot file for traslation Updated from global requirements
test-requirements.txt Updated from global requirements
tox.ini py34 not py33 is tested and supported


Python bindings to the OpenStack Identity API (Keystone)

Latest Version Downloads

This is a client for the OpenStack Identity API, implemented by the Keystone team; it contains a Python API (the keystoneclient module) for OpenStack's Identity Service. For command line interface support, use OpenStackClient.


Python API

By way of a quick-start:

# use v2.0 auth with
>>> from keystoneclient.v2_0 import client
>>> keystone = client.Client(username=USERNAME, password=PASSWORD, tenant_name=TENANT, auth_url=AUTH_URL)
>>> keystone.tenants.list()
>>> tenant = keystone.tenants.create(tenant_name="test", description="My new tenant!", enabled=True)
>>> tenant.delete()
Something went wrong with that request. Please try again.