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,
};
},
}),
},
});