firebase-admin-edge 1.0.11 → 1.0.13
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.
- package/README.md +18 -7
- package/dist/auth/firebase-admin-auth.js +33 -33
- package/dist/auth/firebase-admin-auth.js.map +1 -1
- package/dist/auth/firebase-admin-auth.test.js +71 -71
- package/dist/auth/firebase-admin-auth.test.js.map +1 -1
- package/dist/auth/firebase-auth-endpoints.js +27 -27
- package/dist/auth/firebase-auth-endpoints.test.js +29 -29
- package/dist/auth/firebase-auth-endpoints.test.js.map +1 -1
- package/dist/auth/firebase-auth.js +7 -7
- package/dist/auth/firebase-auth.js.map +1 -1
- package/dist/auth/firebase-auth.test.js +9 -9
- package/dist/auth/firebase-jwt.js +32 -32
- package/dist/auth/firebase-jwt.js.map +1 -1
- package/dist/auth/firebase-jwt.test.js +14 -14
- package/dist/auth/firebase-jwt.test.js.map +1 -1
- package/dist/auth/github-oauth.d.ts +16 -0
- package/dist/auth/github-oauth.d.ts.map +1 -0
- package/dist/auth/github-oauth.js +31 -0
- package/dist/auth/github-oauth.js.map +1 -0
- package/dist/auth/google-oauth.d.ts.map +1 -1
- package/dist/auth/google-oauth.js +16 -15
- package/dist/auth/google-oauth.js.map +1 -1
- package/dist/auth/google-oauth.test.js +15 -14
- package/dist/auth/google-oauth.test.js.map +1 -1
- package/dist/firebase-edge-server.d.ts +14 -74
- package/dist/firebase-edge-server.d.ts.map +1 -1
- package/dist/firebase-edge-server.js +105 -278
- package/dist/firebase-edge-server.js.map +1 -1
- package/dist/firebase-edge-server.test.js +115 -76
- package/dist/firebase-edge-server.test.js.map +1 -1
- package/dist/rest-fetch.d.ts.map +1 -1
- package/dist/rest-fetch.js +7 -6
- package/dist/rest-fetch.js.map +1 -1
- package/dist/rest-fetch.test.js +48 -30
- package/dist/rest-fetch.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { refreshFirebaseIdToken, createAuthUri, signInWithIdp, signInWithCustomToken, getAccountInfoByUid, createSessionCookie, getJWKs, getPublicKeys
|
|
2
|
+
import { refreshFirebaseIdToken, createAuthUri, signInWithIdp, signInWithCustomToken, getAccountInfoByUid, createSessionCookie, getJWKs, getPublicKeys } from './firebase-auth-endpoints.js';
|
|
3
3
|
import * as restFetch from '../rest-fetch.js';
|
|
4
4
|
vi.mock('../rest-fetch.js');
|
|
5
5
|
describe('firebase-auth-endpoints', () => {
|
|
@@ -14,13 +14,13 @@ describe('firebase-auth-endpoints', () => {
|
|
|
14
14
|
it('should refresh token successfully', async () => {
|
|
15
15
|
const mockResponse = {
|
|
16
16
|
access_token: 'new-token',
|
|
17
|
-
refresh_token: 'new-refresh-token'
|
|
17
|
+
refresh_token: 'new-refresh-token'
|
|
18
18
|
};
|
|
19
19
|
const restFetchSpy = vi
|
|
20
20
|
.mocked(restFetch.restFetch)
|
|
21
21
|
.mockResolvedValue({
|
|
22
22
|
data: mockResponse,
|
|
23
|
-
error: null
|
|
23
|
+
error: null
|
|
24
24
|
});
|
|
25
25
|
const result = await refreshFirebaseIdToken('refresh-token', API_KEY, mockFetch);
|
|
26
26
|
expect(result.data).toEqual(mockResponse);
|
|
@@ -28,18 +28,18 @@ describe('firebase-auth-endpoints', () => {
|
|
|
28
28
|
expect(restFetchSpy).toHaveBeenCalledWith('https://securetoken.googleapis.com/v1/token', expect.objectContaining({
|
|
29
29
|
body: {
|
|
30
30
|
grant_type: 'refresh_token',
|
|
31
|
-
refresh_token: 'refresh-token'
|
|
31
|
+
refresh_token: 'refresh-token'
|
|
32
32
|
},
|
|
33
33
|
params: { key: API_KEY },
|
|
34
34
|
form: true,
|
|
35
|
-
global: { fetch: mockFetch }
|
|
35
|
+
global: { fetch: mockFetch }
|
|
36
36
|
}));
|
|
37
37
|
});
|
|
38
38
|
it('should handle error response', async () => {
|
|
39
39
|
const mockError = { message: 'Invalid refresh token' };
|
|
40
40
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
41
41
|
data: null,
|
|
42
|
-
error: { error: mockError }
|
|
42
|
+
error: { error: mockError }
|
|
43
43
|
});
|
|
44
44
|
const result = await refreshFirebaseIdToken('invalid-token', API_KEY);
|
|
45
45
|
expect(result.data).toBeNull();
|
|
@@ -53,7 +53,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
53
53
|
.mocked(restFetch.restFetch)
|
|
54
54
|
.mockResolvedValue({
|
|
55
55
|
data: mockResponse,
|
|
56
|
-
error: null
|
|
56
|
+
error: null
|
|
57
57
|
});
|
|
58
58
|
const result = await createAuthUri('https://redirect.com', API_KEY, mockFetch);
|
|
59
59
|
expect(result.data).toEqual(mockResponse);
|
|
@@ -62,10 +62,10 @@ describe('firebase-auth-endpoints', () => {
|
|
|
62
62
|
expect(restFetchSpy).toHaveBeenCalledWith('https://identitytoolkit.googleapis.com/v1/accounts:createAuthUri', expect.objectContaining({
|
|
63
63
|
body: {
|
|
64
64
|
continueUri: 'https://redirect.com',
|
|
65
|
-
providerId: 'google.com'
|
|
65
|
+
providerId: 'google.com'
|
|
66
66
|
},
|
|
67
67
|
params: { key: API_KEY },
|
|
68
|
-
global: { fetch: mockFetch }
|
|
68
|
+
global: { fetch: mockFetch }
|
|
69
69
|
}));
|
|
70
70
|
});
|
|
71
71
|
});
|
|
@@ -73,11 +73,11 @@ describe('firebase-auth-endpoints', () => {
|
|
|
73
73
|
it('should sign in with IDP successfully', async () => {
|
|
74
74
|
const mockResponse = {
|
|
75
75
|
idToken: 'firebase-token',
|
|
76
|
-
refreshToken: 'refresh'
|
|
76
|
+
refreshToken: 'refresh'
|
|
77
77
|
};
|
|
78
78
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
79
79
|
data: mockResponse,
|
|
80
|
-
error: null
|
|
80
|
+
error: null
|
|
81
81
|
});
|
|
82
82
|
const result = await signInWithIdp('provider-token', 'https://request.com', 'google.com', API_KEY, mockFetch);
|
|
83
83
|
expect(result.data).toEqual(mockResponse);
|
|
@@ -86,8 +86,8 @@ describe('firebase-auth-endpoints', () => {
|
|
|
86
86
|
body: {
|
|
87
87
|
postBody: 'id_token=provider-token&providerId=google.com',
|
|
88
88
|
requestUri: 'https://request.com',
|
|
89
|
-
returnSecureToken: true
|
|
90
|
-
}
|
|
89
|
+
returnSecureToken: true
|
|
90
|
+
}
|
|
91
91
|
}));
|
|
92
92
|
});
|
|
93
93
|
});
|
|
@@ -96,7 +96,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
96
96
|
const mockResponse = { idToken: 'firebase-token' };
|
|
97
97
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
98
98
|
data: mockResponse,
|
|
99
|
-
error: null
|
|
99
|
+
error: null
|
|
100
100
|
});
|
|
101
101
|
const result = await signInWithCustomToken('jwt-token', API_KEY, mockFetch);
|
|
102
102
|
expect(result.data).toEqual(mockResponse);
|
|
@@ -108,7 +108,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
108
108
|
const mockUser = { localId: 'user-123', email: 'test@example.com' };
|
|
109
109
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
110
110
|
data: { users: [mockUser] },
|
|
111
|
-
error: null
|
|
111
|
+
error: null
|
|
112
112
|
});
|
|
113
113
|
const result = await getAccountInfoByUid('user-123', ACCESS_TOKEN, PROJECT_ID, mockFetch);
|
|
114
114
|
expect(result.data).toEqual(mockUser);
|
|
@@ -117,7 +117,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
117
117
|
it('should return null when no users found', async () => {
|
|
118
118
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
119
119
|
data: { users: [] },
|
|
120
|
-
error: null
|
|
120
|
+
error: null
|
|
121
121
|
});
|
|
122
122
|
const result = await getAccountInfoByUid('user-123', ACCESS_TOKEN, PROJECT_ID);
|
|
123
123
|
expect(result.data).toBeNull();
|
|
@@ -130,22 +130,22 @@ describe('firebase-auth-endpoints', () => {
|
|
|
130
130
|
.mocked(restFetch.restFetch)
|
|
131
131
|
.mockResolvedValue({
|
|
132
132
|
data: mockResponse,
|
|
133
|
-
error: null
|
|
133
|
+
error: null
|
|
134
134
|
});
|
|
135
135
|
const result = await createSessionCookie('id-token', ACCESS_TOKEN, PROJECT_ID, undefined, mockFetch);
|
|
136
136
|
expect(result.data).toBe('cookie-value');
|
|
137
137
|
expect(restFetchSpy).toHaveBeenCalledWith(`https://identitytoolkit.googleapis.com/v1/projects/${PROJECT_ID}:createSessionCookie`, expect.objectContaining({
|
|
138
138
|
body: expect.objectContaining({
|
|
139
139
|
// default is 14 days in ms converted to seconds
|
|
140
|
-
validDuration: 1209600
|
|
141
|
-
})
|
|
140
|
+
validDuration: 1209600
|
|
141
|
+
})
|
|
142
142
|
}));
|
|
143
143
|
});
|
|
144
144
|
it('should create session cookie with custom expiry (using seconds)', async () => {
|
|
145
145
|
const mockResponse = { sessionCookie: 'cookie-value' };
|
|
146
146
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
147
147
|
data: mockResponse,
|
|
148
|
-
error: null
|
|
148
|
+
error: null
|
|
149
149
|
});
|
|
150
150
|
const result = await createSessionCookie('id-token', ACCESS_TOKEN, PROJECT_ID, 3600, // 1 hour in seconds
|
|
151
151
|
mockFetch);
|
|
@@ -157,7 +157,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
157
157
|
const mockKeys = [{ kid: 'key-1', kty: 'RSA' }];
|
|
158
158
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
159
159
|
data: { keys: mockKeys },
|
|
160
|
-
error: null
|
|
160
|
+
error: null
|
|
161
161
|
});
|
|
162
162
|
const result = await getJWKs(mockFetch);
|
|
163
163
|
expect(result.data).toEqual(mockKeys);
|
|
@@ -166,7 +166,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
166
166
|
it('should return null when no keys found', async () => {
|
|
167
167
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
168
168
|
data: null,
|
|
169
|
-
error: null
|
|
169
|
+
error: null
|
|
170
170
|
});
|
|
171
171
|
const result = await getJWKs();
|
|
172
172
|
expect(result.data).toBeNull();
|
|
@@ -177,7 +177,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
177
177
|
const mockKeys = { 'key-1': 'public-key-value' };
|
|
178
178
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
179
179
|
data: mockKeys,
|
|
180
|
-
error: null
|
|
180
|
+
error: null
|
|
181
181
|
});
|
|
182
182
|
const result = await getPublicKeys(mockFetch);
|
|
183
183
|
expect(result.data).toEqual(mockKeys);
|
|
@@ -187,7 +187,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
187
187
|
const mockError = { message: 'Failed to fetch keys' };
|
|
188
188
|
vi.mocked(restFetch.restFetch).mockResolvedValue({
|
|
189
189
|
data: null,
|
|
190
|
-
error: { error: mockError }
|
|
190
|
+
error: { error: mockError }
|
|
191
191
|
});
|
|
192
192
|
const result = await getPublicKeys();
|
|
193
193
|
expect(result.data).toBeNull();
|
|
@@ -201,7 +201,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
201
201
|
.mocked(restFetch.restFetch)
|
|
202
202
|
.mockResolvedValue({
|
|
203
203
|
data: mockResponse,
|
|
204
|
-
error: null
|
|
204
|
+
error: null
|
|
205
205
|
});
|
|
206
206
|
const idToken = 'id-token';
|
|
207
207
|
const token = 'access-token';
|
|
@@ -221,7 +221,7 @@ describe('firebase-auth-endpoints', () => {
|
|
|
221
221
|
.mocked(restFetch.restFetch)
|
|
222
222
|
.mockResolvedValue({
|
|
223
223
|
data: { users: [mockUser] },
|
|
224
|
-
error: null
|
|
224
|
+
error: null
|
|
225
225
|
});
|
|
226
226
|
const uid = 'user-123';
|
|
227
227
|
const token = 'access-token';
|
|
@@ -243,15 +243,15 @@ describe('firebase-auth-endpoints', () => {
|
|
|
243
243
|
.mocked(restFetch.restFetch)
|
|
244
244
|
.mockResolvedValue({
|
|
245
245
|
data: mockResponse,
|
|
246
|
-
error: null
|
|
246
|
+
error: null
|
|
247
247
|
});
|
|
248
248
|
const result = await createSessionCookie('id-token', ACCESS_TOKEN, PROJECT_ID, 1209600000, // 14 days in ms
|
|
249
249
|
mockFetch);
|
|
250
250
|
expect(result.data).toBe('cookie-value');
|
|
251
251
|
expect(restFetchSpy).toHaveBeenCalledWith(expect.stringContaining('createSessionCookie'), expect.objectContaining({
|
|
252
252
|
body: expect.objectContaining({
|
|
253
|
-
validDuration: 1209600
|
|
254
|
-
})
|
|
253
|
+
validDuration: 1209600
|
|
254
|
+
})
|
|
255
255
|
}));
|
|
256
256
|
});
|
|
257
257
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-auth-endpoints.test.js","sourceRoot":"","sources":["../../src/auth/firebase-auth-endpoints.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firebase-auth-endpoints.test.js","sourceRoot":"","sources":["../../src/auth/firebase-auth-endpoints.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { signInWithCustomToken, signInWithIdp
|
|
1
|
+
import { signInWithCustomToken, signInWithIdp } from './firebase-auth-endpoints.js';
|
|
2
2
|
export class FirebaseAuth {
|
|
3
3
|
firebase_config;
|
|
4
4
|
fetch;
|
|
@@ -11,18 +11,18 @@ export class FirebaseAuth {
|
|
|
11
11
|
if (signInError) {
|
|
12
12
|
return {
|
|
13
13
|
data: null,
|
|
14
|
-
error: signInError
|
|
14
|
+
error: signInError
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
17
|
if (!signInData) {
|
|
18
18
|
return {
|
|
19
19
|
data: null,
|
|
20
|
-
error: null
|
|
20
|
+
error: null
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
return {
|
|
24
24
|
data: signInData,
|
|
25
|
-
error: null
|
|
25
|
+
error: null
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
async signInWithCustomToken(customToken) {
|
|
@@ -30,18 +30,18 @@ export class FirebaseAuth {
|
|
|
30
30
|
if (signInError) {
|
|
31
31
|
return {
|
|
32
32
|
data: null,
|
|
33
|
-
error: signInError
|
|
33
|
+
error: signInError
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
if (!signInData) {
|
|
37
37
|
return {
|
|
38
38
|
data: null,
|
|
39
|
-
error: null
|
|
39
|
+
error: null
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
return {
|
|
43
43
|
data: signInData,
|
|
44
|
-
error: null
|
|
44
|
+
error: null
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,aAAa,
|
|
1
|
+
{"version":3,"file":"firebase-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,aAAa,EAChB,MAAM,8BAA8B,CAAC;AAGtC,MAAM,OAAO,YAAY;IAET;IACA;IAFZ,YACY,eAA+B,EAC/B,KAA+B;QAD/B,oBAAe,GAAf,eAAe,CAAgB;QAC/B,UAAK,GAAL,KAAK,CAA0B;IACxC,CAAC;IAEJ,KAAK,CAAC,kBAAkB,CACpB,OAAe,EACf,UAAkB,EAClB,UAAU,GAAG,YAAY;QAEzB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,aAAa,CAChE,OAAO,EACP,UAAU,EACV,UAAU,EACV,IAAI,CAAC,eAAe,CAAC,MAAM,EAC3B,IAAI,CAAC,KAAK,CACb,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YACd,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,WAAW;aACrB,CAAC;QACN,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;aACd,CAAC;QACN,CAAC;QAED,OAAO;YACH,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI;SACd,CAAC;IACN,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,WAAmB;QAC3C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAC1C,MAAM,qBAAqB,CACvB,WAAW,EACX,IAAI,CAAC,eAAe,CAAC,MAAM,EAC3B,IAAI,CAAC,KAAK,CACb,CAAC;QAEN,IAAI,WAAW,EAAE,CAAC;YACd,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,WAAW;aACrB,CAAC;QACN,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;aACd,CAAC;QACN,CAAC;QAED,OAAO;YACH,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI;SACd,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -6,7 +6,7 @@ describe('FirebaseAuth', () => {
|
|
|
6
6
|
const mockConfig = {
|
|
7
7
|
apiKey: 'test-api-key',
|
|
8
8
|
authDomain: 'test-project.firebaseapp.com',
|
|
9
|
-
projectId: 'test-project'
|
|
9
|
+
projectId: 'test-project'
|
|
10
10
|
};
|
|
11
11
|
let firebaseAuth;
|
|
12
12
|
let mockFetch;
|
|
@@ -23,11 +23,11 @@ describe('FirebaseAuth', () => {
|
|
|
23
23
|
expiresIn: '3600',
|
|
24
24
|
localId: 'user123',
|
|
25
25
|
providerId: 'google.com',
|
|
26
|
-
federatedId: 'fed123'
|
|
26
|
+
federatedId: 'fed123'
|
|
27
27
|
};
|
|
28
28
|
vi.mocked(endpoints.signInWithIdp).mockResolvedValue({
|
|
29
29
|
data: mockData,
|
|
30
|
-
error: null
|
|
30
|
+
error: null
|
|
31
31
|
});
|
|
32
32
|
const result = await firebaseAuth.signInWithProvider('idToken', 'http://localhost', 'google.com');
|
|
33
33
|
expect(result.data).toEqual(mockData);
|
|
@@ -38,7 +38,7 @@ describe('FirebaseAuth', () => {
|
|
|
38
38
|
const mockError = { code: 400, message: 'Authentication failed' };
|
|
39
39
|
vi.mocked(endpoints.signInWithIdp).mockResolvedValue({
|
|
40
40
|
data: null,
|
|
41
|
-
error: mockError
|
|
41
|
+
error: mockError
|
|
42
42
|
});
|
|
43
43
|
const result = await firebaseAuth.signInWithProvider('idToken', 'http://localhost');
|
|
44
44
|
expect(result.data).toBeNull();
|
|
@@ -47,7 +47,7 @@ describe('FirebaseAuth', () => {
|
|
|
47
47
|
it('should return null data and error when no data returned', async () => {
|
|
48
48
|
vi.mocked(endpoints.signInWithIdp).mockResolvedValue({
|
|
49
49
|
data: null,
|
|
50
|
-
error: null
|
|
50
|
+
error: null
|
|
51
51
|
});
|
|
52
52
|
const result = await firebaseAuth.signInWithProvider('idToken', 'http://localhost');
|
|
53
53
|
expect(result.data).toBeNull();
|
|
@@ -62,11 +62,11 @@ describe('FirebaseAuth', () => {
|
|
|
62
62
|
expiresIn: '3600',
|
|
63
63
|
localId: 'user456',
|
|
64
64
|
providerId: 'custom',
|
|
65
|
-
federatedId: 'fed456'
|
|
65
|
+
federatedId: 'fed456'
|
|
66
66
|
};
|
|
67
67
|
vi.mocked(endpoints.signInWithCustomToken).mockResolvedValue({
|
|
68
68
|
data: mockData,
|
|
69
|
-
error: null
|
|
69
|
+
error: null
|
|
70
70
|
});
|
|
71
71
|
const result = await firebaseAuth.signInWithCustomToken('customToken');
|
|
72
72
|
expect(result.data).toEqual(mockData);
|
|
@@ -77,7 +77,7 @@ describe('FirebaseAuth', () => {
|
|
|
77
77
|
const mockError = { code: 400, message: 'Invalid custom token' };
|
|
78
78
|
vi.mocked(endpoints.signInWithCustomToken).mockResolvedValue({
|
|
79
79
|
data: null,
|
|
80
|
-
error: mockError
|
|
80
|
+
error: mockError
|
|
81
81
|
});
|
|
82
82
|
const result = await firebaseAuth.signInWithCustomToken('customToken');
|
|
83
83
|
expect(result.data).toBeNull();
|
|
@@ -86,7 +86,7 @@ describe('FirebaseAuth', () => {
|
|
|
86
86
|
it('should return null data and error when no data returned', async () => {
|
|
87
87
|
vi.mocked(endpoints.signInWithCustomToken).mockResolvedValue({
|
|
88
88
|
data: null,
|
|
89
|
-
error: null
|
|
89
|
+
error: null
|
|
90
90
|
});
|
|
91
91
|
const result = await firebaseAuth.signInWithCustomToken('customToken');
|
|
92
92
|
expect(result.data).toBeNull();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { decodeProtectedHeader, errors, jwtVerify, importPKCS8, SignJWT, importX509, importSPKI
|
|
2
|
-
import { JOSEError, JWSInvalid, JWSSignatureVerificationFailed, JWTClaimValidationFailed, JWTExpired, JWTInvalid
|
|
1
|
+
import { decodeProtectedHeader, errors, jwtVerify, importPKCS8, SignJWT, importX509, importSPKI } from 'jose';
|
|
2
|
+
import { JOSEError, JWSInvalid, JWSSignatureVerificationFailed, JWTClaimValidationFailed, JWTExpired, JWTInvalid } from 'jose/errors';
|
|
3
3
|
import { getJWKs, getPublicKeys } from './firebase-auth-endpoints.js';
|
|
4
4
|
const ALGORITHM_RS256 = 'RS256';
|
|
5
5
|
const OAUTH_TOKEN_URL = 'https://oauth2.googleapis.com/token';
|
|
@@ -7,7 +7,7 @@ const SCOPES = [
|
|
|
7
7
|
'https://www.googleapis.com/auth/datastore',
|
|
8
8
|
'https://www.googleapis.com/auth/identitytoolkit',
|
|
9
9
|
'https://www.googleapis.com/auth/devstorage.read_write',
|
|
10
|
-
'https://www.googleapis.com/auth/devstorage.read_write'
|
|
10
|
+
'https://www.googleapis.com/auth/devstorage.read_write'
|
|
11
11
|
];
|
|
12
12
|
const keyMap = new Map();
|
|
13
13
|
async function importPublicCryptoKey(publicKey) {
|
|
@@ -31,13 +31,13 @@ export async function verifySessionJWT(sessionCookie, projectId, fetchFn = globa
|
|
|
31
31
|
if (error) {
|
|
32
32
|
return {
|
|
33
33
|
data: null,
|
|
34
|
-
error
|
|
34
|
+
error
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
if (!keyData) {
|
|
38
38
|
return {
|
|
39
39
|
data: null,
|
|
40
|
-
error: new Error('No public keys retrieved')
|
|
40
|
+
error: new Error('No public keys retrieved')
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
// Decode header to get kid
|
|
@@ -47,14 +47,14 @@ export async function verifySessionJWT(sessionCookie, projectId, fetchFn = globa
|
|
|
47
47
|
!keyData[header.kid]) {
|
|
48
48
|
return {
|
|
49
49
|
error: new Error('Invalid session cookie: no KID found'),
|
|
50
|
-
data: null
|
|
50
|
+
data: null
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
const publicKeyString = keyData[header.kid];
|
|
54
54
|
if (!publicKeyString) {
|
|
55
55
|
return {
|
|
56
56
|
error: new Error('No public key found for the given KID'),
|
|
57
|
-
data: null
|
|
57
|
+
data: null
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
const expectedIssuer = `https://session.firebase.google.com/${projectId}`;
|
|
@@ -64,38 +64,38 @@ export async function verifySessionJWT(sessionCookie, projectId, fetchFn = globa
|
|
|
64
64
|
const { payload } = await jwtVerify(sessionCookie, publicKey, {
|
|
65
65
|
issuer: expectedIssuer,
|
|
66
66
|
audience: expectedAudience,
|
|
67
|
-
algorithms: [ALGORITHM_RS256]
|
|
67
|
+
algorithms: [ALGORITHM_RS256]
|
|
68
68
|
});
|
|
69
69
|
return {
|
|
70
70
|
error: null,
|
|
71
|
-
data: payload
|
|
71
|
+
data: payload
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
catch (err) {
|
|
75
75
|
if (err instanceof JWTExpired) {
|
|
76
76
|
return {
|
|
77
77
|
error: new Error('JWT has expired'),
|
|
78
|
-
data: null
|
|
78
|
+
data: null
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
81
|
if (err instanceof JWTClaimValidationFailed) {
|
|
82
82
|
return {
|
|
83
83
|
error: new Error(`JWT claim validation failed: ${err.message}`),
|
|
84
|
-
data: null
|
|
84
|
+
data: null
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
if (err instanceof JWSInvalid ||
|
|
88
88
|
err instanceof JWSSignatureVerificationFailed) {
|
|
89
89
|
return {
|
|
90
90
|
error: new Error('JWT signature verification failed'),
|
|
91
|
-
data: null
|
|
91
|
+
data: null
|
|
92
92
|
};
|
|
93
93
|
}
|
|
94
94
|
return {
|
|
95
95
|
error: new Error(err instanceof Error
|
|
96
96
|
? err.message
|
|
97
97
|
: 'Unknown error during JWT verification'),
|
|
98
|
-
data: null
|
|
98
|
+
data: null
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
101
|
}
|
|
@@ -105,64 +105,64 @@ export async function verifyJWT(idToken, projectId, fetchFn) {
|
|
|
105
105
|
if (!kid) {
|
|
106
106
|
return {
|
|
107
107
|
error: new Error('Invalid ID token: no KID found'),
|
|
108
|
-
data: null
|
|
108
|
+
data: null
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
const { data, error } = await getJWKs(fetchFn);
|
|
112
112
|
if (error) {
|
|
113
113
|
return {
|
|
114
114
|
error,
|
|
115
|
-
data: null
|
|
115
|
+
data: null
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
118
|
if (!data || !data.length) {
|
|
119
119
|
return {
|
|
120
120
|
error: new Error('No JWKs retrieved'),
|
|
121
|
-
data: null
|
|
121
|
+
data: null
|
|
122
122
|
};
|
|
123
123
|
}
|
|
124
124
|
const jwk = data.find((key) => key.kid === kid);
|
|
125
125
|
if (!jwk) {
|
|
126
126
|
return {
|
|
127
127
|
error: new Error(`No matching JWK found for KID: ${kid}`),
|
|
128
|
-
data: null
|
|
128
|
+
data: null
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
const { payload } = await jwtVerify(idToken, jwk, {
|
|
132
132
|
issuer: `https://securetoken.google.com/${projectId}`,
|
|
133
133
|
audience: projectId,
|
|
134
|
-
algorithms: ['RS256']
|
|
134
|
+
algorithms: ['RS256']
|
|
135
135
|
});
|
|
136
136
|
return {
|
|
137
137
|
error: null,
|
|
138
|
-
data: payload
|
|
138
|
+
data: payload
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
141
|
catch (err) {
|
|
142
142
|
if (err instanceof JWTExpired) {
|
|
143
143
|
return {
|
|
144
144
|
error: new Error('JWT has expired'),
|
|
145
|
-
data: null
|
|
145
|
+
data: null
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
148
|
if (err instanceof JWTClaimValidationFailed) {
|
|
149
149
|
return {
|
|
150
150
|
error: new Error(`JWT claim validation failed: ${err.message}`),
|
|
151
|
-
data: null
|
|
151
|
+
data: null
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
if (err instanceof JWTInvalid ||
|
|
155
155
|
err instanceof JWSSignatureVerificationFailed) {
|
|
156
156
|
return {
|
|
157
157
|
error: new Error('JWT signature verification failed'),
|
|
158
|
-
data: null
|
|
158
|
+
data: null
|
|
159
159
|
};
|
|
160
160
|
}
|
|
161
161
|
return {
|
|
162
162
|
error: new Error(err instanceof Error
|
|
163
163
|
? err.message
|
|
164
164
|
: 'Unknown error during JWT verification'),
|
|
165
|
-
data: null
|
|
165
|
+
data: null
|
|
166
166
|
};
|
|
167
167
|
}
|
|
168
168
|
}
|
|
@@ -179,7 +179,7 @@ export async function signJWT(serviceAccount) {
|
|
|
179
179
|
catch (e) {
|
|
180
180
|
return {
|
|
181
181
|
data: null,
|
|
182
|
-
error: new Error('Failed to import private key. Please ensure the private key is correctly formatted.')
|
|
182
|
+
error: new Error('Failed to import private key. Please ensure the private key is correctly formatted.')
|
|
183
183
|
};
|
|
184
184
|
}
|
|
185
185
|
const now = Math.floor(Date.now() / 1000);
|
|
@@ -189,14 +189,14 @@ export async function signJWT(serviceAccount) {
|
|
|
189
189
|
sub: client_email,
|
|
190
190
|
aud: OAUTH_TOKEN_URL,
|
|
191
191
|
iat: now,
|
|
192
|
-
exp: now + 3600
|
|
192
|
+
exp: now + 3600 // 1 hour
|
|
193
193
|
};
|
|
194
194
|
const token = await new SignJWT(payload)
|
|
195
195
|
.setProtectedHeader({ alg: ALGORITHM_RS256, typ: 'JWT' })
|
|
196
196
|
.sign(key);
|
|
197
197
|
return {
|
|
198
198
|
data: token,
|
|
199
|
-
error: null
|
|
199
|
+
error: null
|
|
200
200
|
};
|
|
201
201
|
}
|
|
202
202
|
catch (e) {
|
|
@@ -208,7 +208,7 @@ export async function signJWT(serviceAccount) {
|
|
|
208
208
|
}
|
|
209
209
|
return {
|
|
210
210
|
data: null,
|
|
211
|
-
error: new Error('Unknown error during JWT signing')
|
|
211
|
+
error: new Error('Unknown error during JWT signing')
|
|
212
212
|
};
|
|
213
213
|
}
|
|
214
214
|
}
|
|
@@ -229,14 +229,14 @@ const RESERVED_CLAIMS = [
|
|
|
229
229
|
'nonce',
|
|
230
230
|
'sub',
|
|
231
231
|
'firebase',
|
|
232
|
-
'user_id'
|
|
232
|
+
'user_id'
|
|
233
233
|
];
|
|
234
234
|
export async function signJWTCustomToken(uid, serviceAccount, additionalClaims = {}) {
|
|
235
235
|
const { private_key, client_email } = serviceAccount;
|
|
236
236
|
if (Object.keys(additionalClaims).some((k) => RESERVED_CLAIMS.includes(k) || k.startsWith('firebase'))) {
|
|
237
237
|
return {
|
|
238
238
|
data: null,
|
|
239
|
-
error: new Error(`Reserved claims (${RESERVED_CLAIMS.join(', ')}) cannot be used in additionalClaims`)
|
|
239
|
+
error: new Error(`Reserved claims (${RESERVED_CLAIMS.join(', ')}) cannot be used in additionalClaims`)
|
|
240
240
|
};
|
|
241
241
|
}
|
|
242
242
|
const payload = { uid };
|
|
@@ -256,19 +256,19 @@ export async function signJWTCustomToken(uid, serviceAccount, additionalClaims =
|
|
|
256
256
|
.sign(key);
|
|
257
257
|
return {
|
|
258
258
|
data: token,
|
|
259
|
-
error: null
|
|
259
|
+
error: null
|
|
260
260
|
};
|
|
261
261
|
}
|
|
262
262
|
catch (e) {
|
|
263
263
|
if (e instanceof errors.JOSEError) {
|
|
264
264
|
return {
|
|
265
265
|
data: null,
|
|
266
|
-
error: e
|
|
266
|
+
error: e
|
|
267
267
|
};
|
|
268
268
|
}
|
|
269
269
|
return {
|
|
270
270
|
data: null,
|
|
271
|
-
error: e
|
|
271
|
+
error: e
|
|
272
272
|
};
|
|
273
273
|
}
|
|
274
274
|
}
|