feat(auth): add workspaceId validation and token expiration (#9134)

Added validation to ensure refresh tokens include a workspaceId,
throwing an exception for malformed tokens. Included workspaceId in
payloads and introduced expiration handling for access tokens. This
enhances token security and prevents potential misuse.

Close #9126
This commit is contained in:
Antoine Moreaux 2024-12-18 18:56:49 +01:00 committed by GitHub
parent f620fd3c18
commit a2423fad5e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 0 deletions

View File

@ -100,6 +100,7 @@ export class AccessTokenService {
return {
token: this.jwtWrapperService.sign(jwtPayload, {
secret: this.jwtWrapperService.generateAppSecret('ACCESS', workspaceId),
expiresIn,
}),
expiresAt,
};

View File

@ -90,6 +90,14 @@ export class RefreshTokenService {
);
}
// TODO: Delete this useless condition and error after March 31st 2025
if (!token.workspaceId) {
throw new AuthException(
'This refresh token is malformed',
AuthExceptionCode.INVALID_INPUT,
);
}
return { user, token };
}
@ -115,10 +123,12 @@ export class RefreshTokenService {
const refreshTokenPayload = {
userId,
expiresAt,
workspaceId,
type: AppTokenType.RefreshToken,
};
const jwtPayload = {
sub: userId,
workspaceId,
};
const refreshToken = this.appTokenRepository.create(refreshTokenPayload);