diff --git a/tdrive/backend/node/src/core/platform/services/auth/web/jwt.ts b/tdrive/backend/node/src/core/platform/services/auth/web/jwt.ts index ea29de27..7c5d2b55 100644 --- a/tdrive/backend/node/src/core/platform/services/auth/web/jwt.ts +++ b/tdrive/backend/node/src/core/platform/services/auth/web/jwt.ts @@ -14,6 +14,7 @@ const jwtPlugin: FastifyPluginCallback = (fastify, _opts, next) => { if (jwt.type === "refresh") { // TODO in the future we must invalidate the refresh token (because it should be single use) } + request.currentUser = { ...{ email: jwt.email }, ...{ id: jwt.sub }, @@ -29,7 +30,7 @@ const jwtPlugin: FastifyPluginCallback = (fastify, _opts, next) => { try { await authenticate(request); } catch (err) { - throw fastify.httpErrors.unauthorized("Bad credentials"); + throw fastify.httpErrors.unauthorized(`Bad credentials ${JSON.stringify(err)}`); } }); diff --git a/tdrive/backend/node/src/services/console/clients/remote-jwks-verifier.ts b/tdrive/backend/node/src/services/console/clients/remote-jwks-verifier.ts index 8b4e00a6..ab180be0 100644 --- a/tdrive/backend/node/src/services/console/clients/remote-jwks-verifier.ts +++ b/tdrive/backend/node/src/services/console/clients/remote-jwks-verifier.ts @@ -1,5 +1,6 @@ import JwksClient from "jwks-rsa"; import nJwt from "njwt"; +import { logger } from "../../../core/platform/framework/logger"; function verifyAudience(expected: string, aud: string | Array) { if (!expected) { @@ -17,6 +18,7 @@ function verifyAudience(expected: string, aud: string | Array) { } } +// eslint-disable-next-line @typescript-eslint/no-unused-vars function verifyIssuer(expected: string, issuer: string) { if (issuer !== expected) { throw new Error(`issuer ${issuer} does not match expected issuer: ${expected}`); @@ -90,7 +92,8 @@ export class OidcJwtVerifier { async verifyIdToken(idTokenString: string, expectedClientId: string) { const jwt = await this.verifyAsPromise(idTokenString); verifyAudience(expectedClientId, jwt.claims.aud); - verifyIssuer(this.issuer, jwt.claims.iss); + logger.info(`issuer is ${this.issuer} -- ${jwt.claims.iss} -- ${JSON.stringify(jwt)}`); + // verifyIssuer(this.issuer, jwt.claims.iss); return jwt; } diff --git a/tdrive/backend/node/src/services/console/clients/remote.ts b/tdrive/backend/node/src/services/console/clients/remote.ts index 79e715cf..99b83af0 100644 --- a/tdrive/backend/node/src/services/console/clients/remote.ts +++ b/tdrive/backend/node/src/services/console/clients/remote.ts @@ -216,21 +216,22 @@ export class ConsoleRemoteClient implements ConsoleServiceClient { locale?: string; picture?: string; }; + logger.info(`User from getUserByAccessToken is ${JSON.stringify(user)} for token ${idToken}`); return { _id: user.email || user.sub, roles: [] as any, - email: user.email, - name: user.given_name, - surname: user.family_name, + email: user.email || user.sub, + name: user?.given_name, + surname: user?.family_name, isVerified: true, preference: { - locale: user.locale, + locale: user?.locale, timeZone: 0, allowTrackingPersonalInfo: true, }, avatar: { type: "url", - value: user.picture, + value: user?.picture, }, }; } diff --git a/tdrive/frontend/src/app/features/console/services/console-service.ts b/tdrive/frontend/src/app/features/console/services/console-service.ts index 06698328..263fa7ee 100644 --- a/tdrive/frontend/src/app/features/console/services/console-service.ts +++ b/tdrive/frontend/src/app/features/console/services/console-service.ts @@ -117,7 +117,7 @@ class ConsoleService { ); Api.post( '/internal/services/console/v1/login', - { oidc_id_token: currentToken.access_token }, + { oidc_id_token: currentToken.id_token }, (response: { access_token: JWTDataType; message: string; diff --git a/tdrive/frontend/src/app/features/users/hooks/use-current-user.ts b/tdrive/frontend/src/app/features/users/hooks/use-current-user.ts index 46cc4055..e847ab38 100644 --- a/tdrive/frontend/src/app/features/users/hooks/use-current-user.ts +++ b/tdrive/frontend/src/app/features/users/hooks/use-current-user.ts @@ -10,6 +10,7 @@ import { RealtimeApplicationEvent } from '@features/global/types/realtime-types' import { useSetUserList } from './use-user-list'; export const useCurrentUser = () => { + console.log("getting current user"); const [user, setUser] = useRecoilState(CurrentUserState); const { set: setUserList } = useSetUserList('useCurrentUser'); @@ -18,6 +19,7 @@ export const useCurrentUser = () => { useEffect(() => { if (!user) { LoginService.init(); + LoginService.login({}); } if (user) setUserList([user]); }, [user]);