@webda/google-auth 4.0.0-beta.1 → 4.0.0-beta.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.
- package/lib/google-auth.d.ts +1 -0
- package/lib/google-auth.d.ts.map +1 -0
- package/lib/google-auth.js +8 -8
- package/lib/google-auth.js.map +1 -1
- package/lib/google-auth.spec.d.ts +2 -0
- package/lib/google-auth.spec.d.ts.map +1 -0
- package/lib/google-auth.spec.js +131 -0
- package/lib/google-auth.spec.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/package.json +14 -11
- package/webda.module.json +2 -0
package/lib/google-auth.d.ts
CHANGED
|
@@ -122,3 +122,4 @@ export default class GoogleAuthentication<T extends GoogleParameters = GooglePar
|
|
|
122
122
|
getLocalClient(token: Credentials, open: (url: string) => void, storeToken: (token: Credentials) => Promise<void>): Promise<OAuth2Client>;
|
|
123
123
|
}
|
|
124
124
|
export { GoogleAuthentication };
|
|
125
|
+
//# sourceMappingURL=google-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../src/google-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,sBAAsB,EAEtB,aAAa,EACb,UAAU,EAEX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGhE,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,sBAAsB;IAC1D;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAEnC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,SAAS,EAAE;QAET,WAAW,EAAE,OAAO,CAAC;QAErB,SAAS,EAAE,MAAM,EAAE,CAAC;QAEpB,QAAQ,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KACrC,CAAC;gBAEU,MAAM,KAAA;CAInB;AAED,KAAK,gBAAgB,GAAG,WAAW,GAAG;IACpC,mBAAmB,EAAE,qBAAqB,CAAC;CAC5C,CAAC;AACF;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,CACrF,SAAQ,YAAY,CAAC,CAAC,EAAE,gBAAgB,CACxC,YAAW,aAAa,CAAC,UAAU,CAAC;IAEpC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;IAEhC;;;OAGG;IACH,OAAO;IAIP;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;;OAGG;IACH,sBAAsB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE;IA6B/D;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,QAAQ;IAIR;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,gBAAgB;IAI7C;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAYrE;;;OAGG;IACH,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY;IAInD;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,UAAU;;;;IA0BpC;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM;IAS/B;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,UAAU;;;;IAYrC;;;;;OAKG;IACG,cAAc,CAClB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC3B,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,OAAO,CAAC,YAAY,CAAC;CA0DzB;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
package/lib/google-auth.js
CHANGED
|
@@ -8,7 +8,7 @@ import * as http from "http";
|
|
|
8
8
|
export class GoogleParameters extends OAuthServiceParameters {
|
|
9
9
|
constructor(params) {
|
|
10
10
|
super(params);
|
|
11
|
-
this.access_type
|
|
11
|
+
this.access_type ?? (this.access_type = "online");
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
@@ -86,7 +86,7 @@ export default class GoogleAuthentication extends OAuthService {
|
|
|
86
86
|
* @param state
|
|
87
87
|
*/
|
|
88
88
|
generateAuthUrl(redirect_uri, state, _ctx) {
|
|
89
|
-
|
|
89
|
+
const oauthClient = this.getOAuthClient(redirect_uri);
|
|
90
90
|
return oauthClient.generateAuthUrl({
|
|
91
91
|
access_type: this.parameters.access_type,
|
|
92
92
|
scope: this.parameters.scope,
|
|
@@ -108,13 +108,13 @@ export default class GoogleAuthentication extends OAuthService {
|
|
|
108
108
|
*/
|
|
109
109
|
async handleCallback(ctx) {
|
|
110
110
|
// Verify state are equal
|
|
111
|
-
if (ctx.
|
|
112
|
-
this.log("WARN", `Bad State ${ctx.
|
|
111
|
+
if (ctx.getParameters().state !== ctx.getSession().oauth?.state) {
|
|
112
|
+
this.log("WARN", `Bad State ${ctx.getParameters().state} !== ${ctx.getSession().oauth?.state}`);
|
|
113
113
|
throw new WebdaError.Forbidden("Bad State");
|
|
114
114
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
const code = ctx.getParameters().code;
|
|
116
|
+
const redirect_uri = ctx.getHttpContext().getAbsoluteUrl(`${this.parameters.url}/callback`);
|
|
117
|
+
const oauthClient = this.getOAuthClient(redirect_uri);
|
|
118
118
|
let profile, identId;
|
|
119
119
|
// Now that we have the code, use that to acquire tokens.
|
|
120
120
|
try {
|
|
@@ -149,7 +149,7 @@ export default class GoogleAuthentication extends OAuthService {
|
|
|
149
149
|
* Verify a Google Auth Token
|
|
150
150
|
*/
|
|
151
151
|
async handleToken(context) {
|
|
152
|
-
|
|
152
|
+
const tokens = (await context.getRequestBody()).tokens;
|
|
153
153
|
if (!tokens) {
|
|
154
154
|
throw new WebdaError.BadRequest("No tokens provided");
|
|
155
155
|
}
|
package/lib/google-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-auth.js","sourceRoot":"","sources":["../src/google-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,sBAAsB,EAItB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAe,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAa7B;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,sBAAsB;IA+B1D,YAAY,MAAM;QAChB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"google-auth.js","sourceRoot":"","sources":["../src/google-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-auth.spec.d.ts","sourceRoot":"","sources":["../src/google-auth.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { suite, test } from "@testdeck/mocha";
|
|
8
|
+
import { WebdaError } from "@webda/core";
|
|
9
|
+
import { WebdaTest } from "@webda/core/lib/test.js";
|
|
10
|
+
import * as assert from "assert";
|
|
11
|
+
import fetch from "node-fetch";
|
|
12
|
+
import { GoogleAuthentication } from "./google-auth.js";
|
|
13
|
+
let GoogleAuthTest = class GoogleAuthTest extends WebdaTest {
|
|
14
|
+
async before() {
|
|
15
|
+
await super.before();
|
|
16
|
+
this.service = new GoogleAuthentication(this.webda, "google", {
|
|
17
|
+
client_id: "fake",
|
|
18
|
+
client_secret: "secret"
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
cov() {
|
|
22
|
+
assert.strictEqual(this.service.getName(), "google");
|
|
23
|
+
assert.strictEqual(this.service.getDefaultUrl(), "/google");
|
|
24
|
+
assert.deepStrictEqual(this.service.getCallbackReferer(), [/accounts\.google\.[a-z]+$/]);
|
|
25
|
+
assert.strictEqual(this.service.hasToken(), true);
|
|
26
|
+
assert.strictEqual(this.service.getCallbackQueryParams().length, 6);
|
|
27
|
+
}
|
|
28
|
+
generateAuthUrl() {
|
|
29
|
+
const url = this.service.generateAuthUrl("plopor", "myState", undefined);
|
|
30
|
+
assert.strictEqual(url, "https://accounts.google.com/o/oauth2/v2/auth?access_type=online&scope=email&redirect_uri=plopor&response_type=code&state=myState&client_id=fake");
|
|
31
|
+
}
|
|
32
|
+
mockClient() {
|
|
33
|
+
// Mock client
|
|
34
|
+
// @ts-ignore
|
|
35
|
+
this.service.getOAuthClient = () => {
|
|
36
|
+
return {
|
|
37
|
+
getToken: async (arg) => {
|
|
38
|
+
if (arg === "u1")
|
|
39
|
+
return { tokens: { id_token: arg } };
|
|
40
|
+
},
|
|
41
|
+
generateAuthUrl: () => {
|
|
42
|
+
return "/";
|
|
43
|
+
},
|
|
44
|
+
setCredentials: () => { },
|
|
45
|
+
verifyIdToken: async (args) => {
|
|
46
|
+
if (args.idToken === "u1") {
|
|
47
|
+
return {
|
|
48
|
+
getPayload: () => {
|
|
49
|
+
return {
|
|
50
|
+
sub: "u1",
|
|
51
|
+
email: "u1@webda.io"
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async tokenAndCallback() {
|
|
61
|
+
var _a;
|
|
62
|
+
this.mockClient();
|
|
63
|
+
let ctx = await this.newContext();
|
|
64
|
+
// Verify normal callback
|
|
65
|
+
ctx.getParameters().state = "plop";
|
|
66
|
+
(_a = ctx.getSession()).oauth ?? (_a.oauth = {});
|
|
67
|
+
ctx.getSession().oauth.state = "bouzouf";
|
|
68
|
+
await assert.rejects(() => this.service.handleCallback(ctx), WebdaError.Forbidden);
|
|
69
|
+
ctx.getSession().oauth.state = "plop";
|
|
70
|
+
ctx.getParameters().code = "u1";
|
|
71
|
+
assert.deepStrictEqual(await this.service.handleCallback(ctx), {
|
|
72
|
+
identId: "u1",
|
|
73
|
+
profile: { sub: "u1", email: "u1@webda.io" }
|
|
74
|
+
});
|
|
75
|
+
ctx.getParameters().code = "u2";
|
|
76
|
+
await assert.rejects(() => this.service.handleCallback(ctx), WebdaError.Forbidden);
|
|
77
|
+
// Verify tokens verification
|
|
78
|
+
await assert.rejects(() => this.service.handleToken(ctx), WebdaError.BadRequest);
|
|
79
|
+
ctx = await this.newContext({ tokens: { id_token: "u1" } });
|
|
80
|
+
assert.deepStrictEqual(await this.service.handleToken(ctx), {
|
|
81
|
+
identId: "u1",
|
|
82
|
+
profile: { sub: "u1", email: "u1@webda.io" }
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async localClient() {
|
|
86
|
+
const fakeClient = {};
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
this.service._client = fakeClient;
|
|
89
|
+
assert.strictEqual(await this.service.getLocalClient(null, null, null), fakeClient);
|
|
90
|
+
// @ts-ignore
|
|
91
|
+
this.service._client = undefined;
|
|
92
|
+
const client = await this.service.getLocalClient({ id_token: "mytoken" }, null, null);
|
|
93
|
+
assert.deepStrictEqual(client.credentials, { id_token: "mytoken" });
|
|
94
|
+
// @ts-ignore
|
|
95
|
+
this.service._client = undefined;
|
|
96
|
+
let calledUrl;
|
|
97
|
+
await assert.rejects(async () => this.service.getLocalClient(null, url => {
|
|
98
|
+
calledUrl = url;
|
|
99
|
+
fetch("http://localhost:3000/oauth2callback", undefined);
|
|
100
|
+
}, null), /Failed/);
|
|
101
|
+
this.mockClient();
|
|
102
|
+
await assert.rejects(async () => this.service.getLocalClient(null, url => {
|
|
103
|
+
fetch("http://localhost:3000/oauth2callback?code=u2", undefined);
|
|
104
|
+
}, null), /Cannot read propert/);
|
|
105
|
+
let token;
|
|
106
|
+
await this.service.getLocalClient(null, url => {
|
|
107
|
+
// cov only
|
|
108
|
+
fetch("http://localhost:3000/cov", {});
|
|
109
|
+
fetch("http://localhost:3000/oauth2callback?code=u1", {});
|
|
110
|
+
}, async (t) => {
|
|
111
|
+
token = t;
|
|
112
|
+
});
|
|
113
|
+
assert.strictEqual(calledUrl, "https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=email&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Foauth2callback&response_type=code&client_id=fake");
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
__decorate([
|
|
117
|
+
test
|
|
118
|
+
], GoogleAuthTest.prototype, "cov", null);
|
|
119
|
+
__decorate([
|
|
120
|
+
test
|
|
121
|
+
], GoogleAuthTest.prototype, "generateAuthUrl", null);
|
|
122
|
+
__decorate([
|
|
123
|
+
test
|
|
124
|
+
], GoogleAuthTest.prototype, "tokenAndCallback", null);
|
|
125
|
+
__decorate([
|
|
126
|
+
test
|
|
127
|
+
], GoogleAuthTest.prototype, "localClient", null);
|
|
128
|
+
GoogleAuthTest = __decorate([
|
|
129
|
+
suite
|
|
130
|
+
], GoogleAuthTest);
|
|
131
|
+
//# sourceMappingURL=google-auth.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-auth.spec.js","sourceRoot":"","sources":["../src/google-auth.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webda/google-auth",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.2",
|
|
4
4
|
"description": "Webda Google Authentication",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "webda build",
|
|
8
8
|
"build:watch": "webda build --watch",
|
|
9
9
|
"pretest": "npm run build",
|
|
10
|
-
"lint": "
|
|
11
|
-
"lint:fix": "
|
|
12
|
-
"test": "c8 mocha"
|
|
10
|
+
"lint": "eslint",
|
|
11
|
+
"lint:fix": "eslint --fix",
|
|
12
|
+
"test": "c8 mocha",
|
|
13
|
+
"format": "prettier --check src/**/*",
|
|
14
|
+
"format:fix": "prettier --write src/**/*"
|
|
13
15
|
},
|
|
14
16
|
"repository": {
|
|
15
17
|
"type": "git",
|
|
@@ -25,13 +27,13 @@
|
|
|
25
27
|
"package.json"
|
|
26
28
|
],
|
|
27
29
|
"author": "loopingz",
|
|
28
|
-
"license": "
|
|
30
|
+
"license": "LGPL-3.0-only",
|
|
29
31
|
"bugs": {
|
|
30
32
|
"url": "https://github.com/loopingz/webda.io/issues"
|
|
31
33
|
},
|
|
32
34
|
"homepage": "https://github.com/loopingz/webda.io#readme",
|
|
33
35
|
"dependencies": {
|
|
34
|
-
"@webda/core": "^4.0.0-beta.
|
|
36
|
+
"@webda/core": "^4.0.0-beta.2",
|
|
35
37
|
"google-auth-library": "^9.0.0"
|
|
36
38
|
},
|
|
37
39
|
"c8": {
|
|
@@ -51,14 +53,15 @@
|
|
|
51
53
|
},
|
|
52
54
|
"devDependencies": {
|
|
53
55
|
"@testdeck/mocha": "^0.3.2",
|
|
54
|
-
"@types/node": "
|
|
55
|
-
"@webda/shell": "^4.0.0-beta.
|
|
56
|
+
"@types/node": "20.0.0",
|
|
57
|
+
"@webda/shell": "^4.0.0-beta.2",
|
|
56
58
|
"node-fetch": "^3.3.1",
|
|
57
|
-
"sinon": "^
|
|
59
|
+
"sinon": "^19.0.2",
|
|
60
|
+
"tsx": "^4.17.0"
|
|
58
61
|
},
|
|
59
62
|
"type": "module",
|
|
60
63
|
"engines": {
|
|
61
|
-
"node": ">=
|
|
64
|
+
"node": ">=20.0.0"
|
|
62
65
|
},
|
|
63
66
|
"nx": {
|
|
64
67
|
"implicitDependencies": [
|
|
@@ -66,5 +69,5 @@
|
|
|
66
69
|
"@webda/shell"
|
|
67
70
|
]
|
|
68
71
|
},
|
|
69
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "e992dcfb82cefa6cd5c61c54a0e63778b6f53d8e"
|
|
70
73
|
}
|
package/webda.module.json
CHANGED
|
@@ -153,8 +153,10 @@
|
|
|
153
153
|
"authenticationService",
|
|
154
154
|
"client_id",
|
|
155
155
|
"client_secret",
|
|
156
|
+
"exposeScope",
|
|
156
157
|
"no_referer",
|
|
157
158
|
"redirects",
|
|
159
|
+
"scope",
|
|
158
160
|
"type"
|
|
159
161
|
],
|
|
160
162
|
"description": "Credentials to manage Google Auth https://developers.google.com/identity/protocols/oauth2",
|