Citesphere Documentation
Using Citesphere to Authenticate Users for Single Sign-On
by Navaneesh Kumar Bajakudlu
You can use any form of OAuth Client to get the token, which needs to be passed to other APIs as a header.
1. Authorizing Application
Prerequisites
You should have created an application in Citesphere. If not, create one! Make sure to choose “Apps need user information (Authorization Code)” as application type and to provide a url to which Citesphere should redirect after authorizing a user in “Redirect URL.”
You should have the following information for the application with you:
client_id
- A unique identifier for your application. This is auto-generated for you during the application creation.Example:
OAUTHCLIENT007
client_secret
- An auto-generated secret identifier which will be visible only right after you create the application. If you had lost it, go back and regenerate the secret.redirect_url
- You should have given a callback URL while creating the application in Citesphere. If you forgot this, you can check it back in Citesphere.
Authorization Flow
From your application, redirect your user to the following URL with specified parameters. Maybe have a button that says Login Via CItesphere which has the hyperlink.
ENDPOINT Url GET /api/oauth/authorize
Query Parameters
Name | Type | Description |
---|---|---|
|
| Required. The client ID you received from Citesphere for your App. |
|
| Required. A space-delimited list of scopes. Example: |
|
| Required. Tells the authorization server which grant to execute. Example: |
|
| An unguessable random string. It is used to protect against cross-site request forgery attacks. You will need to use the same |
This request will take you to Citesphere, where the user will enter the credentials and Approve or Deny your application.
If the user Approves your application, Citesphere will redirect you back to your application’s redirect_url
with the following query parameters.
Name | Type | Description |
---|---|---|
|
| A unique string you should use to get the |
|
| The same |
Example: https://<your_app_redirect_url>?code=xyz123&state=mystate
Note that this step happens in the browser, initiated by your application’s user. That means code
and state
are visible in the address bar.
Your application should have a controller in the backend to retrieve code
and state
from <your_app_redirect_url
endpoint. That way, you can use code
and state
to get the access_token
from your backend.
2. Get Access Token
This step should NOT be done in the browser. Why? You have to pass your client_secret
for getting the access_token
.
At any cost, you should NOT expose your client_secret
to your user.
ENDPOINT Url POST /api/oauth/token
Query Parameters
Name | Type | Description |
---|---|---|
|
| Required. The client ID you received from Citesphere for your App. |
|
| Required. The client secret you received from Citesphere for your App. |
|
| Required. The code you received as a response in the previous step |
|
| The URL of the application you configured in Citesphere |
|
| The unguessable random string you provided (and received back) during the previous step. |
|
| Required. Use For a list of values, check https://auth0.com/docs/applications/application-grant-types |
Response
{
"access_token": "2c7c0f10-adf5-ed55-a931-caeea29464ee",
"token_type": "bearer",
"refresh_token": "0d06219a-1b49-7895-9220-ef3b9810f09d",
"expires_in": 406,
"scope": "read"
}
expires_in
specifies the number of seconds remaining for theaccess_token
to expire.You should use the
access_token
as the Bearer token header for accessing any resource.Header Name -
Authorization
Header Value -
Bearer 2c7c0f10-adf5-ed55-a931-caeea29464ee
You should use the
refresh_token
in order to get a newaccess_token
once it is expired
3. Refresh Token
You would need to call this API for getting a new access_token
if it expired. Your application should ideally store the refresh_token
generated previously (ex. database). Use the refresh_token
to retrieve a new access_token
.
Of course, you should pass client_id
and client_secret
similar to the previous request.
ENDPOINT Url POST /api/oauth/token
Query Parameters
Name | Type | Description |
---|---|---|
|
| Required. The client ID you received from Citesphere for your App. |
|
| Required. The client secret you received from Citesphere for your App. |
|
| Required. Use the Example: |
|
| Required. Use |
Example: POST /api/oauth/token?client_id=OAUTHCLIENT007&client_secret=xyz&refresh_token=0d06219a-1b49-7895-9220-ef3b9810f09d&grant_type=refresh_token
Response
{
"access_token": "c322172e-16ac-8952-95e7-19639745bbaf",
"token_type": "bearer",
"refresh_token": "0d06219a-1b49-7895-9220-ef3b9810f09d",
"expires_in": 3600,
"scope": "read"
}
You can use the newly generated access_token
for accessing resources.