VOPaaS is a lightweight proxy used as a bridge between a SAML2int Service Providers and a number of identity providers such as Facebook, google and SAML2int IdP's.
In this section the some describing the VOPaaS application on different levels
- The client SP sends a request to a specific URL which specifies which identity provider it wants to communicate with.
- The proxy connects to the requested identity provider and receives user information
- The proxy connects to a account linking service
- The proxy connects to a consent manager service
- The returned user info attributes which where returned from the service provider and for which the user has given consent will be sent to the SP
- Service provider makes request to proxy. At a specific url which specifies which identity it want to use
- The frontend module is responsible to convert to incoming request to the internal representation
- The internal request is passed on the the router
- The internal request is routed to the right backend based on the url to which the Service provider sent the request
- The backend converts the request from internal data to external request
- The backend send the request and receives user info
- The backend converts the external response to internal data
- Then the information is passed on to the account linking module
- The account linking module contacts the account linking service by a REST API
- The information is then passed on to the consent manager
- The consent manager contacts the consent manager service
- The info is passed on to the router
- By using a state object the router can determine which frontend module should receive the response
- The internal data is the converted to a SAML2 int response.
- The response is returned to the service provider
The service provider does not know that it's actually talking to a proxy. It only knows about the identity providers.
-
Verifies if consent was given for a given SP, IdP and set of attributes
1.1 If no consent where given the requested attributes, a redirect URL and some information about the Service provider will be stored and a ticket will be generated
1.2 Send ticket to show consent page
-
If consent where given the consent service will redirect back to the proxy
- Request unique identifier for a given user in combination with a identity provider
- If a link between the user and identity provider does NOT exists a ticket is returned to the proxy
- Create link between the user and identity provider
- Restart flow
- If a link between the user and identity provider exists an UUID is returned
- If a link between the user and identity provider does NOT exists a ticket is returned to the proxy
In order to make the installation easier a separate project which uses ansible in order to install tha VOPaaS proxy has been created. For more information visit: https://github.com/its-dirg/vopaas_ansible
- Download this repository as a zip file.
- Install dependencies:
pip install -e .
pip install -r requirements.txt
- Example configuration files are located in the example folder
- Modify all necessary parameters, described in Configuration section below.
- In order to start the application run:
gunicorn -b<socket address> satosa.wsgi:app --keyfile=<https key> --certfile=<https cert>
See the SATOSA configuration instructions.
NOTE: Make sure that the module attribute in the frontend configuration file is set to satosa.frontends.saml2.SamlMirrorFrontend
To collect anonymous statistics about which SP and IdP combination the end users use in the statistics service, the statistics micro service must be configured in VOPaaS.
Configuration parameters:
| Parameter name | Data type | Example values | Description |
|---|---|---|---|
module |
string | vopaas.micro_service.statistics_service.StatisticsService |
the python micro service module to import |
plugin |
string | ResponseMicroService |
whether this is a response or a request micro service |
config.rest_uri |
string | https://127.0.0.1:8168 |
url to the REST endpoint of the service |
config.signing_key |
string | pki/statistics.key |
path to key used for signing the request to the service |
config.verify_ssl |
bool | No |
whether the HTTPS certificate of the service should be verified when doing requests to it |
For more information on how to generate metadata which mirrors all the identity providers defined in the backend plugins visit SATOSA proxy doc,
For more infomation on how to start the proxy please visit: SATOSA proxy doc,
The VOPaaS adds the following additional information to the SATOSA state cookie:
- proxy_idp_entityid: Which entity id the proxy will answer as, when sending the authentication response back to the calling SP.
- relay_state: The relay state given by the SP request
- resp_args.in_response_to: The id of the request
- resp_args.binding: Which binding type to use
- resp_args.sp_entity_id: Entity id of the calling SP
- resp_args.name_id_policy: The SAML2 name id policy
Only saves the relay state for the backend-IDP request.




