How to use OAuth2 Tokens in Platform?
EN | ES
Onesait Platform is ready to work with OAuth2 authentication. The Oauth2 token management flow is explained below.
1. OAuth2 Realm configuration parameters
When creating or Updating a Realm, there are two parameters to be configured associated to the OAuth Tokens:
- KEY (Clave) (Secret): key that will be used for clients's authentication..
- TOKEN VALIDITY TIME (S) (Tiempo de validez de token (s)): configurable timespan (in seconds) in which the generated token will be valid.
They are optional attributes. If not informed, they will take default values ​​defined in the platform deployment (onesaitplatform and 43200 (12 hours)).
2. Token Generation
There is an endpoint that allows OAuth2 token generation. The URL is like this: https://lab.onesaitplatform.com/oauth-server/oauth/token
It's a POST request, and it must include:
- Headers:
- Authorization: (client:secret b64)
- Content-Type: application/x-www-form-urlencoded
- Body:
- grant_type: password (User/Password request)
- username: user's Id
- password: user's password
- clientId: id of the client requesting the token
- scope: Token scope
Using Postman to send this request, will be something like this:
The response will have this format:
Highlights:
- access_token: Access token.
- refresh_token: Refresh Token (single use).
- expires_in: Remaining validity time (seconds).
- authorities: Realms' roles asigned to the user.
3. Check Token
Service that verifies the validity of a token. The endpoint will be like this: https://lab.onesaitplatform.com/oauth-server/openplatform-oauth/check_token
The POST request must include:
- Headers:
- Authorization: (client:secret b64)
- Parameter:
- token: token to validate
Using Postman:
If the token is valid, a response will be obtained in the form:
Highlights:
- principal/name: user for which the token was generated.
- exp: Expiration date.
- client_id: Client for which the token was generated.
- authorities: Realm's Roles to which the token's user belongs.
4. Refresh Token
Service that regenerates the token to obtain another one. The endpoint is like this: https://lab.onesaitplatform.com/oauth-server/oauth/token
(the same as for getting a new token, changes the grant-type attribute).
The POST request must include:
- Headers:
- Authorization: (client:secret b64)
- Content-Type: application/x-www-form-urlencoded
- Body:
- grant_type: refresh_token (for token refresh)
- refresh_token: refresh token obtained when the access token was generated.
Using Postman:
The result will have the same structure as when a token generation request is made.
The refresh token is one-use only. After using it, a new one will be provided along with the new access token.
5. Revoke Token
As an additional service, a token revocation service is included. Allows you to disable (revoke) an access token associated with a given user.
The endpoint is like this: https://lab.onesaitplatform.com/oauth-server/openplatform-oauth/revoke_token
The POST request must include:
Headers:
- Authorization: (cliente:secret en b64)
- Content-Type: application/x-www-form-urlencoded
Query Param:
- token: (token to revoke)
In Postman:
The result will indicate that the token is not longer valid:
6. User info endpoints
An endpoint to retrieve user claims. The url is like this: https://lab.onesaitplatform.com/oauth-server/user
The POST request must include:
Headers:
- Authorization: Bearer {jwt}
In Postman: