@point3/logto-module 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/module.ts +3 -3
  2. package/package.json +1 -1
  3. package/dist/client/__tests__/m2m-client.spec.d.ts +0 -1
  4. package/dist/client/__tests__/m2m-client.spec.js +0 -55
  5. package/dist/client/__tests__/m2m-client.spec.js.map +0 -1
  6. package/dist/client/__tests__/oauth-client.spec.d.ts +0 -1
  7. package/dist/client/__tests__/oauth-client.spec.js +0 -40
  8. package/dist/client/__tests__/oauth-client.spec.js.map +0 -1
  9. package/dist/client/config.d.ts +0 -44
  10. package/dist/client/config.js +0 -16
  11. package/dist/client/config.js.map +0 -1
  12. package/dist/client/index.d.ts +0 -5
  13. package/dist/client/index.js +0 -22
  14. package/dist/client/index.js.map +0 -1
  15. package/dist/client/logto-login-session.d.ts +0 -27
  16. package/dist/client/logto-login-session.js +0 -119
  17. package/dist/client/logto-login-session.js.map +0 -1
  18. package/dist/client/m2m-client.d.ts +0 -37
  19. package/dist/client/m2m-client.js +0 -196
  20. package/dist/client/m2m-client.js.map +0 -1
  21. package/dist/client/oauth-client.d.ts +0 -25
  22. package/dist/client/oauth-client.js +0 -129
  23. package/dist/client/oauth-client.js.map +0 -1
  24. package/dist/client/types.d.ts +0 -45
  25. package/dist/client/types.js +0 -37
  26. package/dist/client/types.js.map +0 -1
  27. package/dist/errors.d.ts +0 -24
  28. package/dist/errors.js +0 -62
  29. package/dist/errors.js.map +0 -1
  30. package/dist/index.d.ts +0 -4
  31. package/dist/index.js +0 -41
  32. package/dist/index.js.map +0 -1
  33. package/dist/module.d.ts +0 -27
  34. package/dist/module.js +0 -171
  35. package/dist/module.js.map +0 -1
  36. package/dist/stateless/decorator.d.ts +0 -7
  37. package/dist/stateless/decorator.js +0 -10
  38. package/dist/stateless/decorator.js.map +0 -1
  39. package/dist/stateless/guard.d.ts +0 -10
  40. package/dist/stateless/guard.js +0 -69
  41. package/dist/stateless/guard.js.map +0 -1
  42. package/dist/stateless/guard.spec.d.ts +0 -1
  43. package/dist/stateless/guard.spec.js +0 -210
  44. package/dist/stateless/guard.spec.js.map +0 -1
  45. package/dist/stateless/index.d.ts +0 -2
  46. package/dist/stateless/index.js +0 -19
  47. package/dist/stateless/index.js.map +0 -1
  48. package/dist/token/access-token.d.ts +0 -31
  49. package/dist/token/access-token.js +0 -19
  50. package/dist/token/access-token.js.map +0 -1
  51. package/dist/token/index.d.ts +0 -2
  52. package/dist/token/index.js +0 -19
  53. package/dist/token/index.js.map +0 -1
  54. package/dist/token/verifier.d.ts +0 -13
  55. package/dist/token/verifier.js +0 -56
  56. package/dist/token/verifier.js.map +0 -1
  57. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.LogtoTokenGuard = exports.LogtoTokenGuardToken = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const core_1 = require("@nestjs/core");
18
- const jose_1 = require("jose");
19
- const point3_common_tool_1 = require("point3-common-tool");
20
- const token_1 = require("../token");
21
- exports.LogtoTokenGuardToken = Symbol('LogtoTokenGuard');
22
- let LogtoTokenGuard = class LogtoTokenGuard {
23
- constructor(tokenVerifier) {
24
- this.tokenVerifier = tokenVerifier;
25
- this.reflector = new core_1.Reflector();
26
- }
27
- async canActivate(context) {
28
- const requiredScopes = this.reflector.get('requiredScopes', context.getHandler());
29
- const requiredRoles = this.reflector.get('requiredRoles', context.getHandler());
30
- const request = context.switchToHttp().getRequest();
31
- try {
32
- const bearerToken = this.extractBearerTokenFrom(request.headers);
33
- const result = await this.tokenVerifier.verifyToken(bearerToken, requiredScopes, requiredRoles);
34
- request.user = {
35
- userId: result.sub,
36
- managerId: point3_common_tool_1.p3Values.Guid.parse(result.managerId),
37
- clientId: result.clientId ? point3_common_tool_1.p3Values.Guid.parse(result.clientId) : undefined,
38
- };
39
- return true;
40
- }
41
- catch (error) {
42
- if (error instanceof common_1.UnauthorizedException)
43
- throw error;
44
- if (error instanceof jose_1.errors.JOSEError)
45
- throw new common_1.UnauthorizedException(error);
46
- if (error instanceof Error)
47
- throw new common_1.InternalServerErrorException("요청을 처리하지 못하였습니다.", `${common_1.HttpStatus.INTERNAL_SERVER_ERROR}`);
48
- throw new common_1.UnauthorizedException("접근이 허용되지 않습니다.");
49
- }
50
- }
51
- extractBearerTokenFrom(headers) {
52
- const bearerTokenIdentifier = 'Bearer';
53
- if (!headers.authorization) {
54
- throw new common_1.UnauthorizedException('Authorization header is missing');
55
- }
56
- if (!headers.authorization.startsWith(bearerTokenIdentifier)) {
57
- throw new common_1.UnauthorizedException('Authorization token type not supported');
58
- }
59
- return headers.authorization.slice(bearerTokenIdentifier.length + 1);
60
- }
61
- ;
62
- };
63
- exports.LogtoTokenGuard = LogtoTokenGuard;
64
- exports.LogtoTokenGuard = LogtoTokenGuard = __decorate([
65
- (0, common_1.Injectable)(),
66
- __param(0, (0, common_1.Inject)(token_1.LogtoTokenVerifierToken)),
67
- __metadata("design:paramtypes", [token_1.LogtoTokenVerifier])
68
- ], LogtoTokenGuard);
69
- //# sourceMappingURL=guard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../stateless/guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,uCAAyC;AAGzC,+BAA8B;AAE9B,2DAA8C;AAC9C,oCAAuE;AAE1D,QAAA,oBAAoB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAGvD,IAAM,eAAe,GAArB,MAAM,eAAe;IAE1B,YAKE,aAAyC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;QANnC,cAAS,GAAc,IAAI,gBAAS,EAAE,CAAC;IAO3C,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAW,gBAAgB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5F,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAW,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAE1F,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAGpD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;YAGhG,OAAO,CAAC,IAAI,GAAG;gBACb,MAAM,EAAE,MAAM,CAAC,GAAG;gBAClB,SAAS,EAAE,6BAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;gBAChD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,6BAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;aAC7E,CAAA;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,8BAAqB;gBAAE,MAAM,KAAK,CAAC;YACxD,IAAI,KAAK,YAAY,aAAM,CAAC,SAAS;gBAAE,MAAM,IAAI,8BAAqB,CAAC,KAAK,CAAC,CAAC;YAC9E,IAAI,KAAK,YAAY,KAAK;gBAAE,MAAM,IAAI,qCAA4B,CAAC,kBAAkB,EAAE,GAAG,mBAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAE9H,MAAM,IAAI,8BAAqB,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAQO,sBAAsB,CAAC,OAA4B;QACzD,MAAM,qBAAqB,GAAG,QAAQ,CAAC;QAEvC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,8BAAqB,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,8BAAqB,CAAC,wCAAwC,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAAA,CAAC;CACH,CAAA;AAzDY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAOR,WAAA,IAAA,eAAM,EAAC,+BAAuB,CAAC,CAAA;qCACT,0BAAkB;GAPhC,eAAe,CAyD3B"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,210 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const testing_1 = require("@nestjs/testing");
4
- const common_1 = require("@nestjs/common");
5
- const core_1 = require("@nestjs/core");
6
- const guard_1 = require("./guard");
7
- const token_1 = require("../token");
8
- const point3_common_tool_1 = require("point3-common-tool");
9
- const client_1 = require("client");
10
- describe('LogtoTokenGuard 테스트', () => {
11
- let guard;
12
- let tokenUtil;
13
- let reflector;
14
- let logger;
15
- const testToken = 'eyJhbGciOiJFUzM4NCIsInR5cCI6ImF0K2p3dCIsImtpZCI6ImxKUjU3SkFqVmV1dHk4eWljVzUtdFFySDM2WFl6NUlzWFhXSDVzeXV0dEEifQ.eyJ1c2VyUm9sZXMiOlsicDMtQ0lTTy0wIl0sIm1hbmFnZXJJZCI6Im1hbmFnZXItMDE5NjQ0NWMtOGVjNy03MDc4LWExNDItNGU3ZGI5YTRhYWVhIiwiY2xpZW50SWQiOiJwb2ludDMtMDE5NjNjODUtNDQ2ZS03NGM5LWFmNzktNDhlMjU0NjVjMzI3IiwianRpIjoiV0RYTmxoTWkwT0tHQ1pTRzFKZnBrIiwic3ViIjoieXVsaXVmdHNvMWQwIiwiaWF0IjoxNzQ5MDI0NzIzLCJleHAiOjE3NDkwMjgzMjMsInNjb3BlIjoiIiwiY2xpZW50X2lkIjoiNXFydmk5eW0wajJ0YTJ6YXBnbHU0IiwiaXNzIjoiaHR0cHM6Ly9sb2d0by5wb2ludDMuaW8vb2lkYyIsImF1ZCI6Imh0dHBzOi8vZGVmYXVsdC5sb2d0by5hcHAvYXBpIn0.nZdzvdxQ74m2oFEklVTfQlcqYBkRrRxtHQEgz1L6DjST9_9Wa7H7J1gKJVEjm8NnjFCQXljYM_hTVx1ABTmUgDrEKVjtHFVKUyPoSzxQitXexwmBZY5l8WdyqJDqAy8d';
16
- const mockPayload = {
17
- userRoles: ['p3-CISO-0'],
18
- managerId: 'manager-0196445c-8ec7-7078-a142-4e7db9a4aaea',
19
- clientId: 'point3-019663c85-446e-74c9-af79-48e25465c327',
20
- jti: 'WDXNlhMi0OKGCZSG1Jfpk',
21
- sub: 'yuliuftso1d0',
22
- iat: 1749024723,
23
- exp: 1749028323,
24
- scope: '',
25
- client_id: '5qrvi9ym0j2ta2zapglu4',
26
- iss: 'https://logto.point3.io/oidc',
27
- aud: 'https://default.logto.app/api'
28
- };
29
- beforeEach(async () => {
30
- const mockTokenUtil = {
31
- verifyToken: jest.fn(),
32
- };
33
- const mockReflector = {
34
- get: jest.fn(),
35
- };
36
- const mockLogger = {
37
- warn: jest.fn(),
38
- error: jest.fn(),
39
- log: jest.fn(),
40
- };
41
- const module = await testing_1.Test.createTestingModule({
42
- providers: [
43
- guard_1.LogtoTokenGuard,
44
- {
45
- provide: token_1.LogtoTokenVerifierToken,
46
- useValue: mockTokenUtil,
47
- },
48
- {
49
- provide: core_1.Reflector,
50
- useValue: mockReflector,
51
- },
52
- {
53
- provide: client_1.LogtoLoggerServiceToken,
54
- useValue: mockLogger,
55
- },
56
- ],
57
- }).compile();
58
- guard = module.get(guard_1.LogtoTokenGuard);
59
- tokenUtil = module.get(token_1.LogtoTokenVerifierToken);
60
- reflector = module.get(core_1.Reflector);
61
- logger = module.get(client_1.LogtoLoggerServiceToken);
62
- jest.clearAllMocks();
63
- });
64
- const createMockExecutionContext = (headers = {}, route = { path: '/test' }) => {
65
- const mockRequest = {
66
- headers,
67
- route,
68
- user: undefined
69
- };
70
- return {
71
- switchToHttp: () => ({
72
- getRequest: () => mockRequest,
73
- getResponse: jest.fn(),
74
- getNext: jest.fn(),
75
- }),
76
- getHandler: jest.fn(),
77
- getClass: jest.fn(),
78
- getArgs: jest.fn(),
79
- getArgByIndex: jest.fn(),
80
- switchToRpc: jest.fn(),
81
- switchToWs: jest.fn(),
82
- getType: jest.fn(),
83
- };
84
- };
85
- describe('🔐 성공적인 인증 테스트', () => {
86
- it('유효한 토큰이 제공되었을 때 인증하고 사용자 데이터를 설정해야 함', async () => {
87
- const context = createMockExecutionContext({
88
- authorization: `Bearer ${testToken}`,
89
- });
90
- reflector.get
91
- .mockReturnValueOnce(undefined)
92
- .mockReturnValueOnce(['p3-CISO-0']);
93
- tokenUtil.verifyToken.mockResolvedValueOnce(mockPayload);
94
- const result = await guard.canActivate(context);
95
- const request = context.switchToHttp().getRequest();
96
- expect(result).toBe(true);
97
- expect(tokenUtil.verifyToken).toHaveBeenCalledWith(testToken, undefined, ['p3-CISO-0']);
98
- expect(request.user).toEqual({
99
- userId: 'yuliuftso1d0',
100
- managerId: expect.objectContaining({
101
- toString: expect.any(Function)
102
- }),
103
- clientId: expect.objectContaining({
104
- toString: expect.any(Function)
105
- }),
106
- });
107
- expect(request.user.managerId.toString()).toContain('manager');
108
- expect(request.user.managerId.toString()).toContain('0196445c-8ec7-7078-a142-4e7db9a4aaea');
109
- expect(request.user.clientId.toString()).toContain('point3');
110
- expect(request.user.clientId.toString()).toContain('019663c85-446e-74c9-af79-48e25465c327');
111
- });
112
- it('필수 스코프나 역할이 없을 때도 동작해야 함', async () => {
113
- const context = createMockExecutionContext({
114
- authorization: `Bearer ${testToken}`,
115
- });
116
- reflector.get
117
- .mockReturnValueOnce(undefined)
118
- .mockReturnValueOnce(undefined);
119
- tokenUtil.verifyToken.mockResolvedValueOnce(mockPayload);
120
- const result = await guard.canActivate(context);
121
- expect(result).toBe(true);
122
- expect(tokenUtil.verifyToken).toHaveBeenCalledWith(testToken, undefined, undefined);
123
- });
124
- });
125
- describe('🚫 토큰 추출 실패 테스트', () => {
126
- it('Authorization 헤더가 없을 때 UnauthorizedException을 던져야 함', async () => {
127
- const context = createMockExecutionContext({});
128
- reflector.get
129
- .mockReturnValueOnce(undefined)
130
- .mockReturnValueOnce(['p3-CISO-0']);
131
- await expect(guard.canActivate(context)).rejects.toThrow(common_1.UnauthorizedException);
132
- await expect(guard.canActivate(context)).rejects.toThrow('Authorization header is missing');
133
- });
134
- it('Authorization 헤더가 Bearer가 아닐 때 UnauthorizedException을 던져야 함', async () => {
135
- const context = createMockExecutionContext({
136
- authorization: 'Basic sometoken',
137
- });
138
- reflector.get
139
- .mockReturnValueOnce(undefined)
140
- .mockReturnValueOnce(['p3-CISO-0']);
141
- await expect(guard.canActivate(context)).rejects.toThrow(common_1.UnauthorizedException);
142
- await expect(guard.canActivate(context)).rejects.toThrow('Authorization token type not supported');
143
- });
144
- it('Bearer 헤더에서 토큰을 올바르게 추출해야 함', async () => {
145
- const context = createMockExecutionContext({
146
- authorization: `Bearer ${testToken}`,
147
- });
148
- reflector.get
149
- .mockReturnValueOnce(undefined)
150
- .mockReturnValueOnce(['p3-CISO-0']);
151
- tokenUtil.verifyToken.mockResolvedValueOnce(mockPayload);
152
- await guard.canActivate(context);
153
- expect(tokenUtil.verifyToken).toHaveBeenCalledWith(testToken, undefined, ['p3-CISO-0']);
154
- });
155
- });
156
- describe('❌ 토큰 검증 실패 테스트', () => {
157
- it('토큰 검증에서 UnauthorizedException이 발생하면 다시 던져야 함', async () => {
158
- const context = createMockExecutionContext({
159
- authorization: `Bearer ${testToken}`,
160
- });
161
- reflector.get
162
- .mockReturnValueOnce(undefined)
163
- .mockReturnValueOnce(['p3-CISO-0']);
164
- const authError = new common_1.UnauthorizedException('Invalid token');
165
- tokenUtil.verifyToken.mockRejectedValueOnce(authError);
166
- await expect(guard.canActivate(context)).rejects.toThrow(common_1.UnauthorizedException);
167
- });
168
- it('다른 에러가 발생하면 일반적인 에러 메시지를 던져야 함', async () => {
169
- const context = createMockExecutionContext({
170
- authorization: `Bearer ${testToken}`,
171
- });
172
- reflector.get
173
- .mockReturnValueOnce(undefined)
174
- .mockReturnValueOnce(['p3-CISO-0']);
175
- tokenUtil.verifyToken.mockRejectedValueOnce(new Error('Some other error'));
176
- await expect(guard.canActivate(context)).rejects.toThrow('요청을 처리하지 못하였습니다.');
177
- });
178
- });
179
- describe('🔍 실제 JWT 토큰 분석', () => {
180
- it('제공된 JWT 토큰의 페이로드를 올바르게 디코딩해야 함', () => {
181
- const [header, payload, signature] = testToken.split('.');
182
- const decodedPayload = JSON.parse(Buffer.from(payload, 'base64url').toString());
183
- console.log('🔍 디코딩된 토큰 페이로드:');
184
- console.log(JSON.stringify(decodedPayload, null, 2));
185
- expect(decodedPayload.userRoles).toEqual(['p3-CISO-0']);
186
- expect(decodedPayload.managerId).toBe('manager-0196445c-8ec7-7078-a142-4e7db9a4aaea');
187
- expect(decodedPayload.clientId).toBe('point3-01963c85-446e-74c9-af79-48e25465c327');
188
- expect(decodedPayload.sub).toBe('yuliuftso1d0');
189
- expect(decodedPayload.iss).toBe('https://logto.point3.io/oidc');
190
- const expirationDate = new Date(decodedPayload.exp * 1000);
191
- const issuedDate = new Date(decodedPayload.iat * 1000);
192
- console.log(`📅 토큰 발급 시간: ${issuedDate.toISOString()}`);
193
- console.log(`⏰ 토큰 만료 시간: ${expirationDate.toISOString()}`);
194
- console.log(`🏢 발급자: ${decodedPayload.iss}`);
195
- console.log(`👤 사용자 역할: ${decodedPayload.userRoles.join(', ')}`);
196
- });
197
- it('토큰에서 추출된 GUID 값들이 올바른 형식인지 확인해야 함', () => {
198
- const [header, payload, signature] = testToken.split('.');
199
- const decodedPayload = JSON.parse(Buffer.from(payload, 'base64url').toString());
200
- const managerId = point3_common_tool_1.p3Values.Guid.parse(decodedPayload.managerId);
201
- expect(managerId.Prefix == 'manager');
202
- const clientId = point3_common_tool_1.p3Values.Guid.parse(decodedPayload.clientId);
203
- expect(clientId.Prefix == 'point3');
204
- console.log('✅ GUID 형식 검증 완료:');
205
- console.log(` Manager ID: ${managerId.toString()}`);
206
- console.log(` Client ID: ${clientId.toString()}`);
207
- });
208
- });
209
- });
210
- //# sourceMappingURL=guard.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"guard.spec.js","sourceRoot":"","sources":["../../stateless/guard.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from "./guard";
2
- export * from "./decorator";
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./guard"), exports);
18
- __exportStar(require("./decorator"), exports);
19
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../stateless/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B"}
@@ -1,31 +0,0 @@
1
- export declare class AccessToken {
2
- static THRESHOLD_TIME: number;
3
- accountId: string;
4
- token: string;
5
- expiresAt: Date;
6
- constructor(accountId: string, token: string, expireInSeconds: number);
7
- isExpired(): boolean;
8
- toString(): string;
9
- }
10
- export type AccessTokenPayload = {
11
- jti: string;
12
- sub: string;
13
- iat: number;
14
- exp: number;
15
- scope: string;
16
- client_id: string;
17
- iss: string;
18
- aud: string;
19
- userRoles: string[];
20
- clientId: string;
21
- managerId: string;
22
- userScopes?: string[];
23
- };
24
- export type IdTokenPayload = {
25
- sub: string;
26
- email: string;
27
- email_verified: boolean;
28
- name: string;
29
- phone_number: string;
30
- username: string;
31
- };
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AccessToken = void 0;
4
- class AccessToken {
5
- constructor(accountId, token, expireInSeconds) {
6
- this.accountId = accountId;
7
- this.token = token;
8
- this.expiresAt = new Date(Date.now() + expireInSeconds * 1000 - AccessToken.THRESHOLD_TIME);
9
- }
10
- isExpired() {
11
- return this.expiresAt < new Date();
12
- }
13
- toString() {
14
- return `AccessToken{accountId: ${this.accountId}, expiresAt: ${this.expiresAt}}`;
15
- }
16
- }
17
- exports.AccessToken = AccessToken;
18
- AccessToken.THRESHOLD_TIME = 1000 * 60 * 10;
19
- //# sourceMappingURL=access-token.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"access-token.js","sourceRoot":"","sources":["../../token/access-token.ts"],"names":[],"mappings":";;;AACA,MAAa,WAAW;IAOpB,YAAY,SAAiB,EAAE,KAAa,EAAE,eAAuB;QACjE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CACrB,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,GAAG,IAAI,GAAG,WAAW,CAAC,cAAc,CACnE,CAAC;IACN,CAAC;IAEM,SAAS;QACZ,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IACvC,CAAC;IAEM,QAAQ;QACX,OAAO,0BAA0B,IAAI,CAAC,SAAS,gBAAgB,IAAI,CAAC,SAAS,GAAG,CAAC;IACrF,CAAC;;AArBL,kCAsBC;AArBU,0BAAc,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from "./access-token";
2
- export * from "./verifier";
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./access-token"), exports);
18
- __exportStar(require("./verifier"), exports);
19
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../token/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,6CAA2B"}
@@ -1,13 +0,0 @@
1
- import { LogtoVerifierConfig } from "../client/config";
2
- import * as token from "./access-token";
3
- export declare const LogtoTokenVerifierToken: unique symbol;
4
- export declare class LogtoTokenVerifier {
5
- private readonly config;
6
- constructor(config: LogtoVerifierConfig);
7
- verifyToken(token: string): Promise<token.AccessTokenPayload>;
8
- verifyToken(token: string, requiredScopes: string[], requiredRoles: string[]): Promise<token.AccessTokenPayload>;
9
- verifyIdToken(token: string): Promise<token.IdTokenPayload>;
10
- private shouldContainRequiredPrivileges;
11
- private hasInsufficientScopes;
12
- private hasInsufficientRoles;
13
- }
@@ -1,56 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.LogtoTokenVerifier = exports.LogtoTokenVerifierToken = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const jose_1 = require("jose");
15
- exports.LogtoTokenVerifierToken = Symbol.for("LogtoTokenVerifier");
16
- let LogtoTokenVerifier = class LogtoTokenVerifier {
17
- constructor(config) {
18
- this.config = config;
19
- }
20
- async verifyToken(token, requiredScopes, requiredRoles) {
21
- if (!token)
22
- throw new common_1.UnauthorizedException('엑세스 토큰이 존재하지 않습니다.');
23
- const { payload } = await (0, jose_1.jwtVerify)(token, (0, jose_1.createRemoteJWKSet)(new URL(this.config.jwksUri)), { issuer: this.config.issuer });
24
- const tokenPayload = payload;
25
- if (requiredScopes || requiredRoles) {
26
- this.shouldContainRequiredPrivileges(tokenPayload, requiredScopes, requiredRoles);
27
- }
28
- return tokenPayload;
29
- }
30
- async verifyIdToken(token) {
31
- const { payload } = await (0, jose_1.jwtVerify)(token, (0, jose_1.createRemoteJWKSet)(new URL(this.config.jwksUri)), { issuer: this.config.issuer });
32
- return payload;
33
- }
34
- shouldContainRequiredPrivileges(payload, requiredScopes, requiredRoles) {
35
- const { userScopes, userRoles } = payload;
36
- const scopes = userScopes?.flat() ?? [];
37
- if (this.hasInsufficientScopes(requiredScopes, scopes)) {
38
- throw new common_1.UnauthorizedException({ code: 'auth.insufficient_scope', status: 403 }, { cause: requiredScopes });
39
- }
40
- if (this.hasInsufficientRoles(requiredRoles, userRoles)) {
41
- throw new common_1.UnauthorizedException({ code: 'auth.role_mismatch', status: 403 }, { cause: requiredRoles });
42
- }
43
- }
44
- hasInsufficientScopes(requiredScopes, userScopes) {
45
- return !!(requiredScopes && requiredScopes.length > 0 && !requiredScopes.every(scope => userScopes.includes(scope)));
46
- }
47
- hasInsufficientRoles(requiredRoles, userRoles) {
48
- return !!(requiredRoles && requiredRoles.length > 0 && !requiredRoles.some(role => userRoles.includes(role)));
49
- }
50
- };
51
- exports.LogtoTokenVerifier = LogtoTokenVerifier;
52
- exports.LogtoTokenVerifier = LogtoTokenVerifier = __decorate([
53
- (0, common_1.Injectable)(),
54
- __metadata("design:paramtypes", [Object])
55
- ], LogtoTokenVerifier);
56
- //# sourceMappingURL=verifier.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../token/verifier.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAmE;AACnE,+BAAqD;AAKxC,QAAA,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAGjE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC3B,YAA6B,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;IAAI,CAAC;IAYtD,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,cAAyB,EAAE,aAAwB;QACvF,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,8BAAqB,CAAC,oBAAoB,CAAC,CAAC;QAElE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,gBAAS,EAC/B,KAAK,EAAE,IAAA,yBAAkB,EAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EACvD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CACjC,CAAC;QAEF,MAAM,YAAY,GAAG,OAAmC,CAAC;QAEzD,IAAI,cAAc,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,+BAA+B,CAChC,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAOM,KAAK,CAAC,aAAa,CAAC,KAAa;QACpC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,gBAAS,EAC/B,KAAK,EACL,IAAA,yBAAkB,EAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAChD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CACjC,CAAC;QACF,OAAO,OAA+B,CAAC;IAC3C,CAAC;IAQO,+BAA+B,CACnC,OAAiC,EACjC,cAAyB,EACzB,aAAwB;QAExB,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAExC,IAAI,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,8BAAqB,CAC3B,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,GAAG,EAAE,EAChD,EAAE,KAAK,EAAE,cAAc,EAAE,CAC5B,CAAC;QACN,CAAC;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,8BAAqB,CAC3B,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,EAC3C,EAAE,KAAK,EAAE,aAAa,EAAE,CAC3B,CAAC;QACN,CAAC;IACL,CAAC;IAEO,qBAAqB,CAAC,cAAoC,EAAE,UAAoB;QACpF,OAAO,CAAC,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzH,CAAC;IAEO,oBAAoB,CAAC,aAAmC,EAAE,SAAmB;QACjF,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClH,CAAC;CACJ,CAAA;AAjFY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;;GACA,kBAAkB,CAiF9B"}