Skip to main content

Add custom claims in tokens

Overview

If you want to add custom properties in the token payloads you can do this by using overrides.

Add claims in the OAuth2 Access Token

Override the buildAccessTokenPayload function to include the custom claims.

import OAuth2Provider from "supertokens-node/recipe/oauth2provider";

OAuth2Provider.init({
override: {
functions: (originalImplementation) => ({
...originalImplementation,
buildAccessTokenPayload: async (input) => {
const addedInfo: Record<string, any> = {};
if (input.scopes.includes("profile")) {
addedInfo.profile = "custom-value";
}
return {
...(await originalImplementation.buildAccessTokenPayload(input)),
...addedInfo,
};
},
}),
},
});

Add claims in the ID Token

Override the buildIdTokenPayload function to include the custom claims.

import OAuth2Provider from "supertokens-node/recipe/oauth2provider";

OAuth2Provider.init({
override: {
functions: (originalImplementation) => ({
...originalImplementation,
buildIdTokenPayload: async (input) => {
const addedInfo: Record<string, any> = {};
if (input.scopes.includes("profile")) {
addedInfo.profile = "custom-value";
}
return {
...(await originalImplementation.buildIdTokenPayload(input)),
...addedInfo,
};
},
}),
},
});