Workflow logic for the Federation service.
Bases: keystone.auth.controllers.Auth
Exchange a scoped token for an ECP assertion.
Parameters: | auth – Dictionary that contains a token and service provider ID |
---|---|
Returns: | ECP Assertion based on properties from the token |
Exchange a scoped token for a SAML assertion.
Parameters: | auth – Dictionary that contains a token and service provider ID |
---|---|
Returns: | SAML Assertion based on properties from the token |
Bases: keystone.common.controller.V3Controller
List all domains available to an authenticated user’s groups.
Parameters: | context – request context |
---|---|
Returns: | list of accessible domains |
Bases: keystone.federation.controllers._ControllerBase
A federation protocol representation.
See keystone.common.controller.V3Controller docstring for explanation on _public_parameters class attributes.
Bases: keystone.federation.controllers._ControllerBase
Identity Provider representation.
Bases: keystone.federation.controllers._ControllerBase
Bases: keystone.common.controller.V3Controller
List all projects available to an authenticated user’s groups.
Parameters: | context – request context |
---|---|
Returns: | list of accessible projects |
Bases: keystone.federation.controllers._ControllerBase
Main entry point into the Federation service.
Bases: object
Create an identity provider.
Parameters: |
|
---|---|
Returns: | idp ref |
Return type: | dict |
Create a mapping.
Parameters: |
|
---|---|
Returns: | mapping ref |
Return type: | dict |
Add an IdP-Protocol configuration.
Parameters: |
|
---|---|
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. |
|
Returns: | protocol ref |
Return type: | dict |
Create a service provider.
Parameters: |
|
---|---|
Returns: | service provider ref |
Return type: | dict |
Delete an identity provider.
Parameters: | idp_id (string) – ID of IdP object |
---|---|
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. |
Delete a mapping.
Parameters: | mapping_id – id of mapping to delete |
---|---|
Returns: | None |
Delete an IdP-Protocol configuration.
Parameters: |
|
---|---|
Raises: |
|
Delete a service provider.
Parameters: | sp_id (string) – id of the service provider |
---|---|
Raises keystone.exception.ServiceProviderNotFound: | |
If the service provider doesn’t exist. |
List enabled service providers for Service Catalog
Service Provider in a catalog contains three attributes: id, auth_url, sp_url, where:
Returns: | list of dictionaries with enabled service providers |
---|---|
Return type: | list of dicts |
Get an identity provider by ID.
Parameters: | idp_id (string) – ID of IdP object |
---|---|
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. | |
Returns: | idp ref |
Return type: | dict |
Get an identity provider by remote ID.
Parameters: | remote_id – ID of remote IdP |
---|---|
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. | |
Returns: | idp ref |
Return type: | dict |
Get a mapping, returns the mapping based on mapping_id.
Parameters: | mapping_id – id of mapping to get |
---|---|
Raises keystone.exception.MappingNotFound: | |
If the mapping cannot be found. | |
Returns: | mapping ref |
Return type: | dict |
Get mapping based on idp_id and protocol_id.
Parameters: |
|
---|---|
Raises: |
|
Returns: | mapping ref |
Return type: | dict |
Get an IdP-Protocol configuration.
Parameters: |
|
---|---|
Raises: |
|
Returns: | protocol ref |
Return type: | dict |
Get a service provider.
Parameters: | sp_id (string) – id of the service provider |
---|---|
Returns: | service provider ref |
Return type: | dict |
Raises keystone.exception.ServiceProviderNotFound: | |
If the service provider doesn’t exist. |
List an IdP’s supported protocols.
Parameters: | idp_id (string) – ID of IdP object |
---|---|
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. | |
Returns: | list of protocol ref |
Return type: | list of dict |
Update an identity provider by ID.
Parameters: |
|
---|---|
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. |
|
Returns: | idp ref |
Return type: | dict |
Update a mapping.
Parameters: |
|
---|---|
Returns: | mapping ref |
Return type: | dict |
Change an IdP-Protocol configuration.
Parameters: |
|
---|---|
Raises: |
|
Returns: | protocol ref |
Return type: | dict |
Update a service provider.
Parameters: |
|
---|---|
Returns: | service provider ref |
Return type: | dict |
Raises keystone.exception.ServiceProviderNotFound: | |
If the service provider doesn’t exist. |
Bases: keystone.federation.core.FederationDriverBase
Removed or redefined methods from V8.
Move the abstract methods of any methods removed or modified in later versions of the driver from FederationDriverBase to here. We maintain this so that legacy drivers, which will be a subclass of FederationDriverV8, can still reference them.
List all identity providers.
Returns: | list of idp refs |
---|---|
Return type: | list of dicts |
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. |
Bases: keystone.federation.core.FederationDriverBase
New or redefined methods from V8.
Add any new V9 abstract methods (or those with modified signatures) to this class.
List all identity providers.
Parameters: | hints – filter hints which the driver should implement if at all possible. |
---|---|
Returns: | list of idp refs |
Return type: | list of dicts |
Raises keystone.exception.IdentityProviderNotFound: | |
If the IdP doesn’t exist. |
List all service providers.
Parameters: | hints – filter hints which the driver should implement if at all possible. |
---|---|
Returns: | List of service provider ref objects |
Return type: | list of dicts |
Raises keystone.exception.ServiceProviderNotFound: | |
If the SP doesn’t exist. |
Bases: keystone.common.manager.Manager
Default pivot point for the Federation backend.
See keystone.common.manager.Manager for more details on how this dynamically calls the backend.
List enabled service providers for Service Catalog
Service Provider in a catalog contains three attributes: id, auth_url, sp_url, where:
Returns: | list of dictionaries with enabled service providers |
---|---|
Return type: | list of dicts |
Bases: keystone.federation.core.FederationDriverV9
Wrapper class to supported a V8 legacy driver.
In order to support legacy drivers without having to make the manager code driver-version aware, we wrap legacy drivers so that they look like the latest version. For the various changes made in a new driver, here are the actions needed in this wrapper:
Bases: object
A class for generating an ECP assertion.
Bases: object
A class for generating SAML IdP Metadata.
Generate Identity Provider Metadata.
Generate and format metadata into XML that can be exposed and consumed by a federated Service Provider.
Returns: | XML <EntityDescriptor> object. |
---|---|
Raises keystone.exception.ValidationError: | |
If the required config options aren’t set. |
Bases: object
A class to generate SAML assertions.
Convert Keystone attributes to a SAML assertion.
Parameters: |
|
---|---|
Returns: | XML <Response> object |
Bases: keystone.common.wsgi.RoutersBase
API Endpoints for the Federation extension.
The API looks like:
PUT /OS-FEDERATION/identity_providers/{idp_id}
GET /OS-FEDERATION/identity_providers
GET /OS-FEDERATION/identity_providers/{idp_id}
DELETE /OS-FEDERATION/identity_providers/{idp_id}
PATCH /OS-FEDERATION/identity_providers/{idp_id}
PUT /OS-FEDERATION/identity_providers/
{idp_id}/protocols/{protocol_id}
GET /OS-FEDERATION/identity_providers/
{idp_id}/protocols
GET /OS-FEDERATION/identity_providers/
{idp_id}/protocols/{protocol_id}
PATCH /OS-FEDERATION/identity_providers/
{idp_id}/protocols/{protocol_id}
DELETE /OS-FEDERATION/identity_providers/
{idp_id}/protocols/{protocol_id}
PUT /OS-FEDERATION/mappings
GET /OS-FEDERATION/mappings
PATCH /OS-FEDERATION/mappings/{mapping_id}
GET /OS-FEDERATION/mappings/{mapping_id}
DELETE /OS-FEDERATION/mappings/{mapping_id}
GET /OS-FEDERATION/projects
GET /OS-FEDERATION/domains
PUT /OS-FEDERATION/service_providers/{sp_id}
GET /OS-FEDERATION/service_providers
GET /OS-FEDERATION/service_providers/{sp_id}
DELETE /OS-FEDERATION/service_providers/{sp_id}
PATCH /OS-FEDERATION/service_providers/{sp_id}
GET /OS-FEDERATION/identity_providers/{idp_id}/
protocols/{protocol_id}/auth
POST /OS-FEDERATION/identity_providers/{idp_id}/
protocols/{protocol_id}/auth
GET /auth/OS-FEDERATION/identity_providers/
{idp_id}/protocols/{protocol_id}/websso
?origin=https%3A//horizon.example.com
POST /auth/OS-FEDERATION/identity_providers/
{idp_id}/protocols/{protocol_id}/websso
?origin=https%3A//horizon.example.com
POST /auth/OS-FEDERATION/saml2
POST /auth/OS-FEDERATION/saml2/ecp
GET /OS-FEDERATION/saml2/metadata
GET /auth/OS-FEDERATION/websso/{protocol_id}
?origin=https%3A//horizon.example.com
POST /auth/OS-FEDERATION/websso/{protocol_id}
?origin=https%3A//horizon.example.com
Utilities for Federation Extension.
Bases: object
An abstraction around the remote matches.
Each match is treated internally as a list.
Bases: object
A class to process assertions and mapping rules.
Transform assertion to a dictionary.
The dictionary contains mapping of user name and group ids based on mapping rules.
This function will iterate through the mapping rules to find assertions that are valid.
Parameters: | assertion_data (dict) – an assertion containing values from an IdP |
---|
Example assertion_data:
{
'Email': 'testacct@example.com',
'UserName': 'testacct',
'FirstName': 'Test',
'LastName': 'Account',
'orgPersonType': 'Tester'
}
Returns: | dictionary with user and group_ids |
---|
The expected return structure is:
{
'name': 'foobar',
'group_ids': ['abc123', 'def456'],
'group_names': [
{
'name': 'group_name_1',
'domain': {
'name': 'domain1'
}
},
{
'name': 'group_name_1_1',
'domain': {
'name': 'domain1'
}
},
{
'name': 'group_name_2',
'domain': {
'id': 'xyz132'
}
}
]
}
Bases: object
User mapping type.
Transform groups identified by name/domain to their ids
Function accepts list of groups identified by a name and domain giving a list of group ids in return.
Example of group_names parameter:
[
{
"name": "group_name",
"domain": {
"id": "domain_id"
},
},
{
"name": "group_name_2",
"domain": {
"name": "domain_name"
}
}
]
Parameters: |
|
---|---|
Returns: | generator object with group ids |
Raises keystone.exception.MappedGroupNotFound: | |
in case asked group doesn’t exist in the backend. |
Check group ids cardinality and check their existence in the backend.
This call is not transactional. :param group_ids: IDs of the groups to be checked :type group_ids: list of str
Parameters: |
|
---|---|
Raises: |
|
Check if groups list is non-empty.
Parameters: | group_ids (list of str) – list of group ids |
---|---|
Raises keystone.exception.MissingGroups: | |
if group_ids cardinality is 0 |
Iterate over group ids and make sure they are present in the backend.
This call is not transactional. :param group_ids: IDs of the groups to be checked :type group_ids: list of str
Parameters: |
|
---|---|
Raises keystone.exception.MappedGroupNotFound: | |
If the group returned by mapping was not found in the backend. |