This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
OpenID Connect Dynamic Client Registration
Open ID Connect enables clients (relying party) to verify the identity and obtain profile information of the end user based on the authentication performed by an authorization server, in an interoperable and REST-like manner. Client applications must be registered before they can login end-users with OpenID Connect or receive OAuth 2.0 access tokens. The following section provides information on how an OpenID Connect Relying party can dynamically register with the end user's OpenID provider.
How it works
To register a new client at the authorization server:
- Client discovers the client registration endpoint. For more information on how to do this, see OpenID Connect Discovery Support. The registration endpoint URL discoverable via WebFinger. For more information on discovering the client registration endpoint, see OpenID Connect Discovery.Â
- Client sends an HTTP POST message to the client registration endpoint with and client metadata parameters that the client chooses to specify for itself during the registration.Â
- The authorization server assigns a unique client identifier (client ID) and optionally a client secret.
- The authorization server associates the metadata given in the request with the issued client ID.
Sample Requests
To register, the client sends an HTTP POST message to the client registration endpoint. A sample request and response is shown below.Â
Send Registration Request | |
---|---|
Sample Request | POST /identity/connect/register Content-Type: application/json Accept: application/json Host: server.example.com Authorization: Basic YWRtaW46YWRtaW4= |
Request Body | { "redirect_uris": ["server.example.com"], "client_name": "application_1", "ext_param_owner": "application_owner", "grant_types": ["password"] } |
Response | If the request is successful, you will see the following response: HTTP/1.1 201 Created { "client_id": "s6BhdRkqt3", "client_secret": "ZJYCqe3GGRvdrudKyZS0XhGv_Z45DuKhCUk0gBR1vZk", "client_secret_expires_at": 1577858400, "redirect_uris": ["server.example.com"], "client_name": "application_owner_application_1" }Â If there is an error, you will see the following response: HTTP/1.1 400 Bad Request { "error": "invalid_redirect_uri", "error_description": "One or more redirect_uri values are invalid" }Â |
To register with multiple callbacks, use the following:
Send Registration Request | |
---|---|
Sample Request | POST /identity/connect/register Content-Type: application/json Accept: application/json Host: server.example.com Authorization: Basic YWRtaW46YWRtaW4= |
Request Body | { "redirect_uris": ["regexp=(https://server.example.com/callback|https://testapp:8000/callback)"], "client_name": "application_1", "ext_param_owner": "application_owner", "grant_types": ["password"] } |
To de-provision itself on the authorization server, the client sends a HTTP DELETE request to the client configuration endpoint.Â
Client Delete Request | |
---|---|
Sample Request | You need to specify the DELETE /identity/register/TYxVD3VyYYkNtS3PYt0FI5l0rQYa?userId=admin&applicationName=admin_application_2 Following are the descriptions of the parameters you need to specify in the delete request:
|