Web Client Session Management
This guide shows how to effectively implement session validation on the client side, with our Web SDKs.
The session management article gives an overview of the session validation in Descope.
If you're looking to set up backend validation, check out our Backend Validation page.
Client SDK
Install SDK
Import and initialize SDK
Parameters:
baseUrl
: Custom domain that must be configured to manage token response in cookies. This makes sure every request to our service is through your custom domain, preventing accidental domain blockages.baseStaticUrl
: Custom domain to override the base URL that is used to fetch static files.
OIDC Configuration
If you're using our SDK as an OIDC client with our Federated Apps, you can initialize the oidcConfig
parameter with the following items:
applicationId
: This is the application id, that can be found within the settings of your Federated ApplicationredirectUri
: This is the url that will be redirected to if the user is unauthenticated. The default redirect URI will be used if not provided.scope
: This is a string of the scopes that the OIDC client will request from Descope. This should be one string value with spaces in between each scope. The default scopes are:'openid email roles descope.custom_claims offline_access'
Sending session token to application server
If you are using Client SDK or using Descope Flows, then your application client must send the session token to you application server.
The getSessionToken()
function gets the sessionToken
from local storage via JS which you can then include in your request.
Note
NextAuth does not use Descope's Client SDK but does use JWTs for session management.
At any time, your application client should only send the session token to your application and the application server should validate the session token using Descope Backend SDK.
Logout using Client SDK
If you are integrating using the Descope Client SDK, then you must use the Client SDK to logout. If you are using Descope Flows with React SDK, refer to the Quick Start for details. If you are Descope Client SDK without flows, then refer to the sample code below for logout.
Note
If you're using NextAuth and Next.js, you'll need to also make sure that you're handling the logout using the federated IdP revocation endpoint. You can see this working in a sample app here.
Checking token expiration
One important step in validating a session token is to ensure that the token has not expired. Descope SDKs allows you to check if the session is expired using the isJwtExpired
function.
Roles
The role of a user is determined from their session token in your application. You can extract this information using Descope's SDKs, specifically the getJwtRoles
function.
Permissions
Permissions granted to a user can also be extracted from the session token using the getJwtPermissions
function from Descope's SDKs.