jwt bearer
This commit is contained in:
parent
8623087976
commit
2877dac937
@ -25,6 +25,9 @@ export const middleware = wrap(async function (req: Request, res, next) {
|
||||
'Bearer token parsed from authorization header:',
|
||||
token
|
||||
);
|
||||
} else if (req.headers['x-access-token']) {
|
||||
token = req.headers['x-access-token'];
|
||||
req.oauth2.logger.debug('Bearer token parsed from x-access-token:', token);
|
||||
} else if (req.query?.access_token) {
|
||||
token = req.query.access_token;
|
||||
req.oauth2.logger.debug('Bearer token parsed from query params:', token);
|
||||
@ -35,6 +38,21 @@ export const middleware = wrap(async function (req: Request, res, next) {
|
||||
throw new AccessDenied('Bearer token not found');
|
||||
}
|
||||
|
||||
if (req.oauth2.model.jwt) {
|
||||
if (req.oauth2.model.jwt.isIdToken(token)) {
|
||||
const valid = await req.oauth2.model.jwt.validateIdToken(token);
|
||||
if (!valid) {
|
||||
throw new AccessDenied('Invalid or expired ID token');
|
||||
}
|
||||
|
||||
const bearer = await req.oauth2.model.jwt.convertIdTokenToBearer(token);
|
||||
res.locals.accessToken = bearer;
|
||||
res.locals.idToken = token;
|
||||
req.oauth2.logger.debug('IdToken fetched', bearer);
|
||||
return next();
|
||||
}
|
||||
}
|
||||
|
||||
// Try to fetch access token
|
||||
const object = await req.oauth2.model.accessToken.fetchByToken(token);
|
||||
if (!object) {
|
||||
|
@ -329,6 +329,25 @@ export interface JWTAdapter {
|
||||
scope: string[],
|
||||
nonce?: string
|
||||
) => Promise<string>;
|
||||
|
||||
/**
|
||||
* Is the input an ID token or not
|
||||
* @param token Token to check
|
||||
*/
|
||||
isIdToken: (token: string) => boolean;
|
||||
|
||||
/**
|
||||
* Check the validity of an ID token
|
||||
* @param token JWT token from user
|
||||
*/
|
||||
validateIdToken: (token: string) => Promise<boolean>;
|
||||
|
||||
/**
|
||||
* In order to use the Bearer middleware with ID tokens,
|
||||
* we have to convert it into a common format.
|
||||
* @param token A valid JWT token
|
||||
*/
|
||||
convertIdTokenToBearer: (token: string) => Promise<OAuth2AccessToken>;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user