Nova openid service
- Launchpad Entry: OpenID Authentication Service API in OpenStack Nova
- Created: Rasib Hassan Khan
- Contributors: Rasib Hassan Khan, Jukka Ylitalo, Abu Shohel Ahmed
Currently, the Django-Nova/Dashboard supports only basic username/password based access. There is separate user credential management both on the web service point and OpenStack. OpenStack relies on the web server for user authentication resulting in Multiple Policy Decision Points (PDP). Integration of OpenID with Openstack allows flexible SSO mechanism for administrators. The solution also removes the existing multiple identity silos in web server and OpenStack.
Integration of OpenID SSO Authentication service for OpenStack. Includes implementations of APIs in OpenStack for OpenID Service, and incorporates extension of Django-Nova/Dashboard to use the APIs to allow administrative login into web server.OpenStack Nova database schema also includes additional field 'openid' in 'user' table, to tag specific OpenID user to an existing OpenStack user.
1: User requests OpenID login
2: API OpenidAuthReq called
3: Endpoint Discovery
4: Receive OP meta-info
5: Response XML (redirection info.)
6: Redirect to OpenID provider
7: User authentication at OP
8: Redirect back to Dashboard
9: API OpenidAuthVerify called
10: Discover and verify
11: Verification response, and find user for specific OpenID user
12: Response XML (user info.)
13: Login user
For the purpose of the implementation, we have introduced two new APIs. For the present prototype implementation, they have been defined in the format of the other EC2 APIs, with the same response format. The description of the APIs are as follows:
- Called by the GUI web server, when a user tries to perform OpenID Authentication. Additional to the required parameters, it requires the 'name' parameter, formed in the format '<OpenID_URL>&<return_to_URL>'. The 'return_to_URL' is the point where the OpenID provider will redirect back the user (some URL in the web server, eg. dashboard:8080/openid-user) after the authentication is complete at the provider's end.
- Response XML: Form and Input parameters required for user HTTP 302 redirection to OpenID provider
- Called by the GUI web server, after an OpenID provider redirects a user back to the web server after authentication is complete at the provider's end. Additional to the required parameters, it requires the 'name' parameter, which includes the whole response string from the OpenID provider.
- Response XML: If verification is successful, and there exists a user for the specific OpenID user, returns user information (similar to DescribeUser API).
Nova-Manage also incorporates additional functionality for admins to create/modify an OpenID URL for an existing Nova user.
The detailed signalling and message sequence is shown in the following figure: