mirror of
https://github.com/Gimanh/taskview-community.git
synced 2026-09-11 21:38:56 +00:00
Merge pull request #74 from Gimanh/fix/70-oidc-login-nonce
fix: oidc login
This commit is contained in:
@@ -313,7 +313,7 @@ export default class AuthController {
|
||||
loginByCode = async (req: Request, res: Response) => {
|
||||
const schema = z.object({
|
||||
email: z.string().trim().email().toLowerCase(),
|
||||
code: z.string().trim().regex(/^\d{6}$/, '6-digit code'),
|
||||
code: z.string().trim().min(6).max(64),
|
||||
});
|
||||
|
||||
const data = schema.safeParse(req.body);
|
||||
|
||||
@@ -114,6 +114,7 @@ export class OidcProvider implements SsoProvider {
|
||||
const tokens = await client.authorizationCodeGrant(config, currentUrl, {
|
||||
pkceCodeVerifier: codeVerifier,
|
||||
expectedState: returnedState,
|
||||
expectedNonce: storedNonce,
|
||||
})
|
||||
|
||||
const claims = tokens.claims()
|
||||
@@ -122,10 +123,6 @@ export class OidcProvider implements SsoProvider {
|
||||
throw new Error('OIDC token missing email claim')
|
||||
}
|
||||
|
||||
if (claims.nonce !== storedNonce) {
|
||||
throw new Error('Nonce mismatch — possible token replay attack')
|
||||
}
|
||||
|
||||
return {
|
||||
email: (claims.email as string).toLowerCase(),
|
||||
externalId: claims.sub,
|
||||
|
||||
Reference in New Issue
Block a user