@webda/auth 0.0.0-stage → 4.0.0-beta.5
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/LICENSE +166 -0
- package/README.md +26 -2
- package/lib/authentication.service.d.ts +286 -0
- package/lib/authentication.service.d.ts.map +1 -0
- package/lib/authentication.service.js +798 -0
- package/lib/authentication.service.js.map +1 -0
- package/lib/compat/upgrade.d.ts +71 -0
- package/lib/compat/upgrade.d.ts.map +1 -0
- package/lib/compat/upgrade.js +185 -0
- package/lib/compat/upgrade.js.map +1 -0
- package/lib/email/emailpassword.service.d.ts +241 -0
- package/lib/email/emailpassword.service.d.ts.map +1 -0
- package/lib/email/emailpassword.service.js +718 -0
- package/lib/email/emailpassword.service.js.map +1 -0
- package/lib/email/tokens.d.ts +36 -0
- package/lib/email/tokens.d.ts.map +1 -0
- package/lib/email/tokens.js +46 -0
- package/lib/email/tokens.js.map +1 -0
- package/lib/errors.d.ts +53 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +73 -0
- package/lib/errors.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +9 -0
- package/lib/index.js.map +1 -0
- package/lib/oauth/oauth.service.d.ts +293 -0
- package/lib/oauth/oauth.service.d.ts.map +1 -0
- package/lib/oauth/oauth.service.js +557 -0
- package/lib/oauth/oauth.service.js.map +1 -0
- package/lib/provider.d.ts +53 -0
- package/lib/provider.d.ts.map +1 -0
- package/lib/provider.js +55 -0
- package/lib/provider.js.map +1 -0
- package/lib/test/authtest.d.ts +39 -0
- package/lib/test/authtest.d.ts.map +1 -0
- package/lib/test/authtest.js +62 -0
- package/lib/test/authtest.js.map +1 -0
- package/lib/test/emailtest.d.ts +25 -0
- package/lib/test/emailtest.d.ts.map +1 -0
- package/lib/test/emailtest.js +39 -0
- package/lib/test/emailtest.js.map +1 -0
- package/lib/test/fakeoauth.service.d.ts +45 -0
- package/lib/test/fakeoauth.service.d.ts.map +1 -0
- package/lib/test/fakeoauth.service.js +78 -0
- package/lib/test/fakeoauth.service.js.map +1 -0
- package/lib/test/stubprovider.d.ts +35 -0
- package/lib/test/stubprovider.d.ts.map +1 -0
- package/lib/test/stubprovider.js +46 -0
- package/lib/test/stubprovider.js.map +1 -0
- package/lib/test/v3.d.ts +29 -0
- package/lib/test/v3.d.ts.map +1 -0
- package/lib/test/v3.js +47 -0
- package/lib/test/v3.js.map +1 -0
- package/lib/throttle.d.ts +40 -0
- package/lib/throttle.d.ts.map +1 -0
- package/lib/throttle.js +47 -0
- package/lib/throttle.js.map +1 -0
- package/package.json +69 -3
- package/test/config.json +20 -0
- package/webda.module.json +632 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emailpassword.service.js","sourceRoot":"","sources":["../../src/email/emailpassword.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** What an emailed link is for */
|
|
2
|
+
export type EmailTokenPurpose = "register" | "verify" | "recover";
|
|
3
|
+
/** Claims of an emailed token */
|
|
4
|
+
export interface EmailTokenClaims {
|
|
5
|
+
purpose: EmailTokenPurpose;
|
|
6
|
+
email: string;
|
|
7
|
+
sub?: string;
|
|
8
|
+
pwdAt?: number;
|
|
9
|
+
jti: string;
|
|
10
|
+
}
|
|
11
|
+
/** Default lifetimes in seconds */
|
|
12
|
+
export declare const EMAIL_TOKEN_TTL: Record<EmailTokenPurpose, number>;
|
|
13
|
+
/**
|
|
14
|
+
* Sign a purpose-scoped emailed token
|
|
15
|
+
* @param purpose - purpose
|
|
16
|
+
* @param claims - email, user and password timestamp
|
|
17
|
+
* @param claims.email - email of the token
|
|
18
|
+
* @param claims.sub - user id
|
|
19
|
+
* @param claims.pwdAt - password change timestamp
|
|
20
|
+
* @param ttl - lifetime in seconds
|
|
21
|
+
* @returns signed token
|
|
22
|
+
*/
|
|
23
|
+
export declare function signEmailToken(purpose: EmailTokenPurpose, claims: {
|
|
24
|
+
email: string;
|
|
25
|
+
sub?: string;
|
|
26
|
+
pwdAt?: number;
|
|
27
|
+
}, ttl?: number): Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Verify an emailed token
|
|
30
|
+
* @param token - token from the link
|
|
31
|
+
* @param purpose - expected purpose
|
|
32
|
+
* @returns claims
|
|
33
|
+
* @throws TokenExpired if expired, TokenInvalid for any other problem
|
|
34
|
+
*/
|
|
35
|
+
export declare function verifyEmailToken(token: string, purpose: EmailTokenPurpose): Promise<EmailTokenClaims>;
|
|
36
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/email/tokens.ts"],"names":[],"mappings":"AAIA,kCAAkC;AAClC,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElE,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,mCAAmC;AACnC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAqD,CAAC;AAGpH;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,GAAG,GAAE,MAAiC,GACrC,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiB3G"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getUuid } from "@webda/utils";
|
|
2
|
+
import { useCrypto } from "@webda/core";
|
|
3
|
+
import { TokenExpired, TokenInvalid } from "../errors.js";
|
|
4
|
+
/** Default lifetimes in seconds */
|
|
5
|
+
export const EMAIL_TOKEN_TTL = { register: 86400, verify: 86400, recover: 3600 };
|
|
6
|
+
const AUDIENCE = "webda-email";
|
|
7
|
+
/**
|
|
8
|
+
* Sign a purpose-scoped emailed token
|
|
9
|
+
* @param purpose - purpose
|
|
10
|
+
* @param claims - email, user and password timestamp
|
|
11
|
+
* @param claims.email - email of the token
|
|
12
|
+
* @param claims.sub - user id
|
|
13
|
+
* @param claims.pwdAt - password change timestamp
|
|
14
|
+
* @param ttl - lifetime in seconds
|
|
15
|
+
* @returns signed token
|
|
16
|
+
*/
|
|
17
|
+
export async function signEmailToken(purpose, claims, ttl = EMAIL_TOKEN_TTL[purpose]) {
|
|
18
|
+
return useCrypto().jwtSign({ ...claims, purpose, jti: getUuid("base64") }, { audience: AUDIENCE, expiresIn: ttl });
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Verify an emailed token
|
|
22
|
+
* @param token - token from the link
|
|
23
|
+
* @param purpose - expected purpose
|
|
24
|
+
* @returns claims
|
|
25
|
+
* @throws TokenExpired if expired, TokenInvalid for any other problem
|
|
26
|
+
*/
|
|
27
|
+
export async function verifyEmailToken(token, purpose) {
|
|
28
|
+
if (typeof token !== "string") {
|
|
29
|
+
throw new TokenInvalid();
|
|
30
|
+
}
|
|
31
|
+
let claims;
|
|
32
|
+
try {
|
|
33
|
+
claims = await useCrypto().jwtVerify(token, { audience: AUDIENCE });
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
if (err?.name === "TokenExpiredError") {
|
|
37
|
+
throw new TokenExpired();
|
|
38
|
+
}
|
|
39
|
+
throw new TokenInvalid();
|
|
40
|
+
}
|
|
41
|
+
if (!claims || typeof claims !== "object" || claims.purpose !== purpose || typeof claims.email !== "string") {
|
|
42
|
+
throw new TokenInvalid();
|
|
43
|
+
}
|
|
44
|
+
return claims;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/email/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAc1D,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAsC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACpH,MAAM,QAAQ,GAAG,aAAa,CAAC;AAE/B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA0B,EAC1B,MAAuD,EACvD,GAAG,GAAW,eAAe,CAAC,OAAO,CAAC;IAEtC,OAAO,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AACrH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAA0B;IAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,YAAY,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,MAAM,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,YAAY,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5G,MAAM,IAAI,YAAY,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/lib/errors.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { WebdaError } from "@webda/core";
|
|
2
|
+
export { InvalidIdent, PasswordPolicyError, TokenInvalid } from "@webda/core";
|
|
3
|
+
/** An account already owns this email; log in to link (409) */
|
|
4
|
+
export declare class AccountExists extends WebdaError.HttpError {
|
|
5
|
+
/** @param message - error message */
|
|
6
|
+
constructor(message?: string);
|
|
7
|
+
}
|
|
8
|
+
/** The ident is already linked to another user (409) */
|
|
9
|
+
export declare class IdentLinkedElsewhere extends WebdaError.HttpError {
|
|
10
|
+
/** @param message - error message */
|
|
11
|
+
constructor(message?: string);
|
|
12
|
+
}
|
|
13
|
+
/** A v3 ident upgrades to a key another user already holds; resolve it manually (409) */
|
|
14
|
+
export declare class IdentConflict extends WebdaError.HttpError {
|
|
15
|
+
/** @param message - error message */
|
|
16
|
+
constructor(message?: string);
|
|
17
|
+
}
|
|
18
|
+
/** The last login method cannot be removed (409) */
|
|
19
|
+
export declare class LastLoginMethod extends WebdaError.HttpError {
|
|
20
|
+
/** @param message - error message */
|
|
21
|
+
constructor(message?: string);
|
|
22
|
+
}
|
|
23
|
+
/** Credentials are invalid (403) */
|
|
24
|
+
export declare class InvalidCredentials extends WebdaError.HttpError {
|
|
25
|
+
/** @param message - error message */
|
|
26
|
+
constructor(message?: string);
|
|
27
|
+
}
|
|
28
|
+
/** Registration is disabled (403) */
|
|
29
|
+
export declare class RegistrationDisabled extends WebdaError.HttpError {
|
|
30
|
+
/** @param message - error message */
|
|
31
|
+
constructor(message?: string);
|
|
32
|
+
}
|
|
33
|
+
/** The token has expired (410) */
|
|
34
|
+
export declare class TokenExpired extends WebdaError.HttpError {
|
|
35
|
+
/** @param message - error message */
|
|
36
|
+
constructor(message?: string);
|
|
37
|
+
}
|
|
38
|
+
/** Too many attempts (429) */
|
|
39
|
+
export declare class Throttled extends WebdaError.HttpError {
|
|
40
|
+
/** @param message - error message */
|
|
41
|
+
constructor(message?: string);
|
|
42
|
+
}
|
|
43
|
+
/** The email domain is not allowed for this provider (403) */
|
|
44
|
+
export declare class EmailDomainNotAllowed extends WebdaError.HttpError {
|
|
45
|
+
/** @param message - error message */
|
|
46
|
+
constructor(message?: string);
|
|
47
|
+
}
|
|
48
|
+
/** The request body must be JSON (415) */
|
|
49
|
+
export declare class UnsupportedMediaType extends WebdaError.HttpError {
|
|
50
|
+
/** @param message - error message */
|
|
51
|
+
constructor(message?: string);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E,+DAA+D;AAC/D,qBAAa,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAyC,EAE7D;CACF;AAED,wDAAwD;AACxD,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA0C,EAE9D;CACF;AAED,yFAAyF;AACzF,qBAAa,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA6D,EAEjF;CACF;AAED,oDAAoD;AACpD,qBAAa,eAAgB,SAAQ,UAAU,CAAC,SAAS;IACvD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA8C,EAElE;CACF;AAED,oCAAoC;AACpC,qBAAa,kBAAmB,SAAQ,UAAU,CAAC,SAAS;IAC1D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA8B,EAElD;CACF;AAED,qCAAqC;AACrC,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAmC,EAEvD;CACF;AAED,kCAAkC;AAClC,qBAAa,YAAa,SAAQ,UAAU,CAAC,SAAS;IACpD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAwB,EAE5C;CACF;AAED,8BAA8B;AAC9B,qBAAa,SAAU,SAAQ,UAAU,CAAC,SAAS;IACjD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA4B,EAEhD;CACF;AAED,8DAA8D;AAC9D,qBAAa,qBAAsB,SAAQ,UAAU,CAAC,SAAS;IAC7D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAmC,EAEvD;CACF;AAED,0CAA0C;AAC1C,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAgD,EAEpE;CACF"}
|
package/lib/errors.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { WebdaError } from "@webda/core";
|
|
2
|
+
export { InvalidIdent, PasswordPolicyError, TokenInvalid } from "@webda/core";
|
|
3
|
+
/** An account already owns this email; log in to link (409) */
|
|
4
|
+
export class AccountExists extends WebdaError.HttpError {
|
|
5
|
+
/** @param message - error message */
|
|
6
|
+
constructor(message = "Account exists, log in to link") {
|
|
7
|
+
super(message, 409);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/** The ident is already linked to another user (409) */
|
|
11
|
+
export class IdentLinkedElsewhere extends WebdaError.HttpError {
|
|
12
|
+
/** @param message - error message */
|
|
13
|
+
constructor(message = "Ident is linked to another user") {
|
|
14
|
+
super(message, 409);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** A v3 ident upgrades to a key another user already holds; resolve it manually (409) */
|
|
18
|
+
export class IdentConflict extends WebdaError.HttpError {
|
|
19
|
+
/** @param message - error message */
|
|
20
|
+
constructor(message = "Upgraded ident key already belongs to another user") {
|
|
21
|
+
super(message, 409);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** The last login method cannot be removed (409) */
|
|
25
|
+
export class LastLoginMethod extends WebdaError.HttpError {
|
|
26
|
+
/** @param message - error message */
|
|
27
|
+
constructor(message = "Cannot remove the last login method") {
|
|
28
|
+
super(message, 409);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Credentials are invalid (403) */
|
|
32
|
+
export class InvalidCredentials extends WebdaError.HttpError {
|
|
33
|
+
/** @param message - error message */
|
|
34
|
+
constructor(message = "Invalid credentials") {
|
|
35
|
+
super(message, 403);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Registration is disabled (403) */
|
|
39
|
+
export class RegistrationDisabled extends WebdaError.HttpError {
|
|
40
|
+
/** @param message - error message */
|
|
41
|
+
constructor(message = "Registration is disabled") {
|
|
42
|
+
super(message, 403);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** The token has expired (410) */
|
|
46
|
+
export class TokenExpired extends WebdaError.HttpError {
|
|
47
|
+
/** @param message - error message */
|
|
48
|
+
constructor(message = "Expired token") {
|
|
49
|
+
super(message, 410);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** Too many attempts (429) */
|
|
53
|
+
export class Throttled extends WebdaError.HttpError {
|
|
54
|
+
/** @param message - error message */
|
|
55
|
+
constructor(message = "Too many attempts") {
|
|
56
|
+
super(message, 429);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** The email domain is not allowed for this provider (403) */
|
|
60
|
+
export class EmailDomainNotAllowed extends WebdaError.HttpError {
|
|
61
|
+
/** @param message - error message */
|
|
62
|
+
constructor(message = "Email domain not allowed") {
|
|
63
|
+
super(message, 403);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** The request body must be JSON (415) */
|
|
67
|
+
export class UnsupportedMediaType extends WebdaError.HttpError {
|
|
68
|
+
/** @param message - error message */
|
|
69
|
+
constructor(message = "Content-Type must be application/json") {
|
|
70
|
+
super(message, 415);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E,+DAA+D;AAC/D,MAAM,OAAO,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAW,gCAAgC;QAC5D,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,wDAAwD;AACxD,MAAM,OAAO,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAW,iCAAiC;QAC7D,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,OAAO,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAW,oDAAoD;QAChF,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,oDAAoD;AACpD,MAAM,OAAO,eAAgB,SAAQ,UAAU,CAAC,SAAS;IACvD,qCAAqC;IACrC,YAAY,OAAO,GAAW,qCAAqC;QACjE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,oCAAoC;AACpC,MAAM,OAAO,kBAAmB,SAAQ,UAAU,CAAC,SAAS;IAC1D,qCAAqC;IACrC,YAAY,OAAO,GAAW,qBAAqB;QACjD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,qCAAqC;AACrC,MAAM,OAAO,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAW,0BAA0B;QACtD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,kCAAkC;AAClC,MAAM,OAAO,YAAa,SAAQ,UAAU,CAAC,SAAS;IACpD,qCAAqC;IACrC,YAAY,OAAO,GAAW,eAAe;QAC3C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,OAAO,SAAU,SAAQ,UAAU,CAAC,SAAS;IACjD,qCAAqC;IACrC,YAAY,OAAO,GAAW,mBAAmB;QAC/C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,OAAO,qBAAsB,SAAQ,UAAU,CAAC,SAAS;IAC7D,qCAAqC;IACrC,YAAY,OAAO,GAAW,0BAA0B;QACtD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAW,uCAAuC;QACnE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./errors.js";
|
|
2
|
+
export * from "./throttle.js";
|
|
3
|
+
export * from "./provider.js";
|
|
4
|
+
export * from "./authentication.service.js";
|
|
5
|
+
export * from "./email/tokens.js";
|
|
6
|
+
export * from "./email/emailpassword.service.js";
|
|
7
|
+
export * from "./oauth/oauth.service.js";
|
|
8
|
+
export * from "./compat/upgrade.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./errors.js";
|
|
2
|
+
export * from "./throttle.js";
|
|
3
|
+
export * from "./provider.js";
|
|
4
|
+
export * from "./authentication.service.js";
|
|
5
|
+
export * from "./email/tokens.js";
|
|
6
|
+
export * from "./email/emailpassword.service.js";
|
|
7
|
+
export * from "./oauth/oauth.service.js";
|
|
8
|
+
export * from "./compat/upgrade.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { type AsyncEventUnknown, type AuthResult, type ProviderInfo, type ResolvedIdentity, Service, ServiceParameters, type WebContext } from "@webda/core";
|
|
2
|
+
import { type AuthProvider } from "../provider.js";
|
|
3
|
+
/**
|
|
4
|
+
* Credentials as returned by an OAuth token endpoint (google-auth-library `Credentials` shape): `id_token`,
|
|
5
|
+
* `access_token`, `refresh_token`, `expiry_date`, `token_type`, `scope`... Values are not typed by the schema
|
|
6
|
+
* (providers send nulls); providers check what they use.
|
|
7
|
+
*/
|
|
8
|
+
export interface OAuthTokens {
|
|
9
|
+
/** Any provider field */
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Input of the `Auth.<Provider>.Token` operations: `token`, or the provider credentials `tokens`
|
|
14
|
+
* @WebdaSchema
|
|
15
|
+
*/
|
|
16
|
+
export interface OAuthTokenRequest {
|
|
17
|
+
/**
|
|
18
|
+
* Token issued by the provider to the client (an ID token for OpenID Connect providers)
|
|
19
|
+
*/
|
|
20
|
+
token?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Credentials obtained by the client from the provider (v3 body; its `id_token` is verified)
|
|
23
|
+
*/
|
|
24
|
+
tokens?: OAuthTokens;
|
|
25
|
+
}
|
|
26
|
+
/** Parameters of an authorization request */
|
|
27
|
+
export interface OAuthAuthorizationRequest {
|
|
28
|
+
/** Random state to send back on the callback */
|
|
29
|
+
state: string;
|
|
30
|
+
/** Callback url */
|
|
31
|
+
redirectUri: string;
|
|
32
|
+
/** Scopes to request */
|
|
33
|
+
scope: string[];
|
|
34
|
+
/** PKCE code challenge (base64url SHA-256 of the verifier) */
|
|
35
|
+
codeChallenge: string;
|
|
36
|
+
/** PKCE method */
|
|
37
|
+
codeChallengeMethod: "S256";
|
|
38
|
+
/** OpenID Connect nonce: the ID token of the callback must carry it */
|
|
39
|
+
nonce: string;
|
|
40
|
+
}
|
|
41
|
+
/** Parameters of a code exchange */
|
|
42
|
+
export interface OAuthCallbackRequest {
|
|
43
|
+
/** Authorization code */
|
|
44
|
+
code: string;
|
|
45
|
+
/** redirect_uri of the authorization request */
|
|
46
|
+
redirectUri: string;
|
|
47
|
+
/** PKCE code verifier */
|
|
48
|
+
codeVerifier: string;
|
|
49
|
+
/** Nonce of the authorization request: providers returning an ID token must check it */
|
|
50
|
+
nonce: string;
|
|
51
|
+
}
|
|
52
|
+
/** Browser redirects of the OAuth callback */
|
|
53
|
+
export interface OAuthRedirects {
|
|
54
|
+
/**
|
|
55
|
+
* Where a successful login lands when the login did not carry an allowed `redirect` parameter
|
|
56
|
+
* @default "/"
|
|
57
|
+
*/
|
|
58
|
+
success?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Where a failed login or callback lands, with `?reason=<CODE>` (required)
|
|
61
|
+
*/
|
|
62
|
+
failure?: string;
|
|
63
|
+
}
|
|
64
|
+
/** OAuthProvider parameters */
|
|
65
|
+
export declare class OAuthProviderParameters extends ServiceParameters {
|
|
66
|
+
/**
|
|
67
|
+
* Route prefix of the login (`<url>`) and callback (`<url>/callback`) routes
|
|
68
|
+
* @default "/auth/<providerName>"
|
|
69
|
+
*/
|
|
70
|
+
url?: string;
|
|
71
|
+
/**
|
|
72
|
+
* OAuth client id
|
|
73
|
+
*/
|
|
74
|
+
client_id: string;
|
|
75
|
+
/**
|
|
76
|
+
* OAuth client secret
|
|
77
|
+
*/
|
|
78
|
+
client_secret?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Scopes requested from the provider (the default depends on the provider)
|
|
81
|
+
*/
|
|
82
|
+
scope?: string[];
|
|
83
|
+
/**
|
|
84
|
+
* Callback url registered at the provider
|
|
85
|
+
* @default "<absolute url of the request>/callback"; set it explicitly behind a proxy
|
|
86
|
+
*/
|
|
87
|
+
redirect_uri?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Allowed post-login targets for the `redirect` query parameter of the login route: absolute http(s) urls, a
|
|
90
|
+
* target matches when it has the same origin and its path is the listed path or below it
|
|
91
|
+
* @default []
|
|
92
|
+
*/
|
|
93
|
+
authorized_uris?: string[];
|
|
94
|
+
/**
|
|
95
|
+
* Browser redirects of the callback
|
|
96
|
+
*/
|
|
97
|
+
redirects?: OAuthRedirects;
|
|
98
|
+
/** Only these email domains may use this provider (see ProviderEmailPolicy) */
|
|
99
|
+
allowedEmailDomains?: string[];
|
|
100
|
+
/** Whether the verification of the email is believed (see ProviderEmailPolicy) */
|
|
101
|
+
trustEmailVerification?: boolean | string[];
|
|
102
|
+
/**
|
|
103
|
+
* @param params - raw parameters
|
|
104
|
+
* @returns this
|
|
105
|
+
*/
|
|
106
|
+
load(params?: any): this;
|
|
107
|
+
}
|
|
108
|
+
/** Pending login, kept in an encrypted cookie between the login and the callback */
|
|
109
|
+
interface PendingLogin {
|
|
110
|
+
/** Provider that started it */
|
|
111
|
+
provider: string;
|
|
112
|
+
/** Random state sent to the provider */
|
|
113
|
+
state: string;
|
|
114
|
+
/** PKCE code verifier */
|
|
115
|
+
verifier: string;
|
|
116
|
+
/** OpenID Connect nonce */
|
|
117
|
+
nonce: string;
|
|
118
|
+
/** Post-login target, already checked against authorized_uris */
|
|
119
|
+
redirect?: string;
|
|
120
|
+
/** redirect_uri sent to the provider: the code exchange must use the same */
|
|
121
|
+
redirectUri: string;
|
|
122
|
+
/** Expiry timestamp (ms) */
|
|
123
|
+
expires: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Loggable reason of an error: library messages may contain tokens or their payload, so only a short code or the
|
|
127
|
+
* error class name is kept
|
|
128
|
+
* @param err - any error
|
|
129
|
+
* @returns a reason without any part of the message
|
|
130
|
+
*/
|
|
131
|
+
export declare function safeErrorReason(err: any): string;
|
|
132
|
+
/**
|
|
133
|
+
* Keep only the known credentials keys, as bounded strings or finite numbers
|
|
134
|
+
* @param tokens - client provided credentials
|
|
135
|
+
* @returns the sanitised credentials
|
|
136
|
+
*/
|
|
137
|
+
export declare function sanitizeTokens(tokens: OAuthTokens): OAuthTokens;
|
|
138
|
+
/**
|
|
139
|
+
* Base of the OAuth 2.0 / OpenID Connect login providers
|
|
140
|
+
*
|
|
141
|
+
* Exposes, under `url` (default `/auth/<providerName>`):
|
|
142
|
+
* - `GET <url>{?redirect}`: starts a login with a random `state`, a PKCE (S256) verifier and an OpenID `nonce`, kept
|
|
143
|
+
* in a dedicated encrypted cookie (10 min, HttpOnly, SameSite=Lax, path `url`), then redirects to the provider;
|
|
144
|
+
* `redirect` must match `authorized_uris`
|
|
145
|
+
* - `GET <url>/callback`: consumes that cookie, checks the state, exchanges the code (`handleCallback`) and hands
|
|
146
|
+
* the identity to `Authentication.complete()`; never throws, failures go to `redirects.failure?reason=<CODE>`
|
|
147
|
+
* - operation `Auth.<Provider>.Token` (`POST auth/<providerName>/token`, JSON body `{ token }` or `{ tokens }`) for
|
|
148
|
+
* non-browser clients; it never links an identity to the session user
|
|
149
|
+
*
|
|
150
|
+
* Subclasses implement `providerName`, `getAuthorizationUrl`, `handleCallback` and `handleToken`; the provider of the
|
|
151
|
+
* returned identities is always forced to `providerName`.
|
|
152
|
+
*/
|
|
153
|
+
export declare abstract class OAuthProvider<T extends OAuthProviderParameters = OAuthProviderParameters, E extends AsyncEventUnknown = {}> extends Service<T, E> implements AuthProvider {
|
|
154
|
+
static Parameters: typeof OAuthProviderParameters;
|
|
155
|
+
/** Unique provider name, used in ident keys ("google") */
|
|
156
|
+
abstract readonly providerName: string;
|
|
157
|
+
/**
|
|
158
|
+
* Build the authorization url of the provider, sending the PKCE challenge and the nonce
|
|
159
|
+
* @param request - authorization request
|
|
160
|
+
* @returns the url to redirect the browser to
|
|
161
|
+
*/
|
|
162
|
+
abstract getAuthorizationUrl(request: OAuthAuthorizationRequest): string | Promise<string>;
|
|
163
|
+
/**
|
|
164
|
+
* Exchange an authorization code (with the PKCE verifier) and verify the result, including the nonce of an ID
|
|
165
|
+
* token
|
|
166
|
+
* @param request - code exchange
|
|
167
|
+
* @returns the identity proven by the provider
|
|
168
|
+
* @throws an HttpError (for example TokenInvalid) whose code is used as the failure reason
|
|
169
|
+
*/
|
|
170
|
+
abstract handleCallback(request: OAuthCallbackRequest): Promise<ResolvedIdentity>;
|
|
171
|
+
/**
|
|
172
|
+
* Verify a token presented by a non-browser client
|
|
173
|
+
* @param request - `token` and/or `tokens` (at least one is present)
|
|
174
|
+
* @returns the identity proven by the provider
|
|
175
|
+
* @throws TokenInvalid when the token cannot be verified
|
|
176
|
+
*/
|
|
177
|
+
abstract handleToken(request: OAuthTokenRequest): Promise<ResolvedIdentity>;
|
|
178
|
+
/**
|
|
179
|
+
* Called after a successful `Authentication.complete()` (status ok or mfa_required)
|
|
180
|
+
* @param _identity - the identity
|
|
181
|
+
* @param _result - the result
|
|
182
|
+
* @param _source - browser callback or token operation
|
|
183
|
+
* @param _request - the token operation request (token operation only)
|
|
184
|
+
*/
|
|
185
|
+
protected onAuthenticated(_identity: ResolvedIdentity, _result: AuthResult, _source: "callback" | "token", _request?: OAuthTokenRequest): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* @returns false when the provider works without client secret (public clients)
|
|
188
|
+
*/
|
|
189
|
+
protected requiresClientSecret(): boolean;
|
|
190
|
+
/**
|
|
191
|
+
* @returns the name of the pending login cookie
|
|
192
|
+
*/
|
|
193
|
+
protected getCookieName(): string;
|
|
194
|
+
/** @override */
|
|
195
|
+
resolve(): this;
|
|
196
|
+
/** @override */
|
|
197
|
+
init(): Promise<this>;
|
|
198
|
+
/**
|
|
199
|
+
* Register `Auth.<Provider>.Token`: its id and path depend on the provider name
|
|
200
|
+
* @override
|
|
201
|
+
*/
|
|
202
|
+
initOperations(): void;
|
|
203
|
+
/**
|
|
204
|
+
* @returns public info
|
|
205
|
+
*/
|
|
206
|
+
getPublicInfo(): ProviderInfo;
|
|
207
|
+
/**
|
|
208
|
+
* Log in with a token obtained by the client from the provider
|
|
209
|
+
*
|
|
210
|
+
* Requires a JSON request (a cross-site form or `text/plain` POST is refused). A request carrying a logged-in
|
|
211
|
+
* session never links the identity to that user: an identity owned by another user is refused
|
|
212
|
+
* (IDENT_LINKED_ELSEWHERE), a new or unowned one gets a fresh session.
|
|
213
|
+
* @param token - token (an ID token for OpenID Connect providers)
|
|
214
|
+
* @param tokens - credentials obtained from the provider (v3 body)
|
|
215
|
+
* @returns the auth result
|
|
216
|
+
*/
|
|
217
|
+
token(token?: string, tokens?: OAuthTokens): Promise<AuthResult>;
|
|
218
|
+
/**
|
|
219
|
+
* Refuse a request that is not JSON: cross-site requests can only send form or `text/plain` bodies without a
|
|
220
|
+
* preflight
|
|
221
|
+
* @param ctx - operation context
|
|
222
|
+
* @throws UnsupportedMediaType when the HTTP request is not `application/json`
|
|
223
|
+
*/
|
|
224
|
+
protected requireJson(ctx: any): void;
|
|
225
|
+
/**
|
|
226
|
+
* The token operation never links: with a logged-in session, an identity owned by another user is refused and a
|
|
227
|
+
* new or unowned one starts a fresh session
|
|
228
|
+
* @param ctx - operation context
|
|
229
|
+
* @param identity - verified identity
|
|
230
|
+
* @throws IdentLinkedElsewhere when the identity belongs to another user than the session one
|
|
231
|
+
*/
|
|
232
|
+
protected leaveForeignSession(ctx: any, identity: ResolvedIdentity): Promise<void>;
|
|
233
|
+
/**
|
|
234
|
+
* @param identity - identity returned by the subclass
|
|
235
|
+
* @returns the identity
|
|
236
|
+
* @throws TokenInvalid when it has no subject
|
|
237
|
+
*/
|
|
238
|
+
protected checkIdentity(identity: ResolvedIdentity): ResolvedIdentity;
|
|
239
|
+
/**
|
|
240
|
+
* @param identity - identity returned by the subclass
|
|
241
|
+
* @returns the identity, always attributed to this provider
|
|
242
|
+
*/
|
|
243
|
+
protected ownIdentity(identity: ResolvedIdentity): ResolvedIdentity;
|
|
244
|
+
/**
|
|
245
|
+
* Check a post-login target against `authorized_uris`: same origin, and the listed path or below it; an encoded
|
|
246
|
+
* slash or backslash in the path is refused
|
|
247
|
+
* @param redirect - candidate
|
|
248
|
+
* @returns the normalised url, undefined when not allowed
|
|
249
|
+
*/
|
|
250
|
+
protected allowedRedirect(redirect: unknown): string | undefined;
|
|
251
|
+
/**
|
|
252
|
+
* @param ctx - web context
|
|
253
|
+
* @returns the callback url sent to the provider
|
|
254
|
+
*/
|
|
255
|
+
protected getRedirectUri(ctx: WebContext): string;
|
|
256
|
+
/**
|
|
257
|
+
* Set (or clear, without value) the pending login cookie, scoped to the callback path: the path of the effective
|
|
258
|
+
* redirect_uri, which includes any deployment prefix (API Gateway stage, path-stripping proxy) the routes do not see
|
|
259
|
+
* @param ctx - web context
|
|
260
|
+
* @param redirectUri - callback url
|
|
261
|
+
* @param value - encrypted pending login
|
|
262
|
+
*/
|
|
263
|
+
protected sendPendingCookie(ctx: WebContext, redirectUri: string, value?: string): void;
|
|
264
|
+
/**
|
|
265
|
+
* Read and clear the pending login cookie
|
|
266
|
+
* @param ctx - web context
|
|
267
|
+
* @returns the pending login, undefined when absent, invalid, expired or of another provider
|
|
268
|
+
*/
|
|
269
|
+
protected consumePending(ctx: WebContext): Promise<PendingLogin | undefined>;
|
|
270
|
+
/**
|
|
271
|
+
* Redirect without caching
|
|
272
|
+
* @param ctx - web context
|
|
273
|
+
* @param url - target
|
|
274
|
+
*/
|
|
275
|
+
protected redirect(ctx: WebContext, url: string): void;
|
|
276
|
+
/**
|
|
277
|
+
* @param ctx - web context
|
|
278
|
+
* @param reason - failure code
|
|
279
|
+
*/
|
|
280
|
+
protected fail(ctx: WebContext, reason: string): void;
|
|
281
|
+
/**
|
|
282
|
+
* Start a login: redirect the browser to the provider
|
|
283
|
+
* @param ctx - web context
|
|
284
|
+
*/
|
|
285
|
+
login(ctx: WebContext): Promise<void>;
|
|
286
|
+
/**
|
|
287
|
+
* Provider callback: verify the state, exchange the code, complete the login and redirect; never throws
|
|
288
|
+
* @param ctx - web context
|
|
289
|
+
*/
|
|
290
|
+
callback(ctx: WebContext): Promise<void>;
|
|
291
|
+
}
|
|
292
|
+
export {};
|
|
293
|
+
//# sourceMappingURL=oauth.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.service.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.service.ts"],"names":[],"mappings":"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"}
|