@crossauth/backend 0.0.34 → 0.0.36
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/dist/authenticators/ldapauth.d.ts +6 -0
- package/dist/authenticators/ldapauth.d.ts.map +1 -1
- package/dist/authenticators/oidcauthenticator.d.ts +5 -4
- package/dist/authenticators/oidcauthenticator.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +51 -50
- package/dist/oauth/client.d.ts +8 -0
- package/dist/oauth/client.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var d = (S, s, e) => Ie(S, typeof s != "symbol" ? s + "" : s, e);
|
|
|
4
4
|
import { CrossauthError as o, ErrorCode as l, UserState as E, CrossauthLogger as u, j as f, OAuthFlows as b, KeyPrefix as U, OAuthTokenConsumerBase as Pe, OAuthClientBase as Ke } from "@crossauth/common";
|
|
5
5
|
import { PrismaClient as ce, Prisma as X } from "@prisma/client";
|
|
6
6
|
import ye from "@mbakereth/ldapjs";
|
|
7
|
-
import { timingSafeEqual as he, randomBytes as ue, randomUUID as
|
|
7
|
+
import { timingSafeEqual as he, randomBytes as ue, randomUUID as Fe, createHash as Oe, pbkdf2 as Ne, createHmac as ie, createCipheriv as Re, createDecipheriv as De, randomInt as ee } from "node:crypto";
|
|
8
8
|
import { promisify as xe } from "node:util";
|
|
9
9
|
import W from "nunjucks";
|
|
10
10
|
import Ee from "nodemailer";
|
|
@@ -2498,7 +2498,7 @@ class Kt extends Y {
|
|
|
2498
2498
|
super(new de(s), e);
|
|
2499
2499
|
}
|
|
2500
2500
|
}
|
|
2501
|
-
class
|
|
2501
|
+
class Ft extends qe {
|
|
2502
2502
|
/**
|
|
2503
2503
|
* Creates a PostgresKeyStorage object, optionally overriding defaults.
|
|
2504
2504
|
* @param pgPool the instance of the Posrgres client.
|
|
@@ -2508,7 +2508,7 @@ class Ot extends qe {
|
|
|
2508
2508
|
super(new de(s), e);
|
|
2509
2509
|
}
|
|
2510
2510
|
}
|
|
2511
|
-
class
|
|
2511
|
+
class Ot extends We {
|
|
2512
2512
|
/**
|
|
2513
2513
|
* Creates a PostgresOAuthClientStorage object, optionally overriding defaults.
|
|
2514
2514
|
* @param pgPool the instance of the Posrgres client.
|
|
@@ -2679,7 +2679,7 @@ const Ce = process.env.PBKDF2_DIGEST || "sha256", Se = Number(process.env.PBKDF2
|
|
|
2679
2679
|
* Creates a UUID
|
|
2680
2680
|
*/
|
|
2681
2681
|
static uuid() {
|
|
2682
|
-
return
|
|
2682
|
+
return Fe();
|
|
2683
2683
|
}
|
|
2684
2684
|
/**
|
|
2685
2685
|
* Standard hash using SHA256 (not PBKDF2 or HMAC)
|
|
@@ -2697,7 +2697,7 @@ const Ce = process.env.PBKDF2_DIGEST || "sha256", Se = Number(process.env.PBKDF2
|
|
|
2697
2697
|
* @returns the string containing the hash
|
|
2698
2698
|
*/
|
|
2699
2699
|
static sha256(s) {
|
|
2700
|
-
return
|
|
2700
|
+
return Oe("sha256").update(s).digest("base64url");
|
|
2701
2701
|
}
|
|
2702
2702
|
/**
|
|
2703
2703
|
* Hashes a password and returns it as a base64 or base64url encoded string
|
|
@@ -3639,7 +3639,8 @@ class Dt extends be {
|
|
|
3639
3639
|
super({ friendlyName: "LDAP", ...t });
|
|
3640
3640
|
d(this, "ldapAutoCreateAccount", !1);
|
|
3641
3641
|
d(this, "ldapStorage");
|
|
3642
|
-
|
|
3642
|
+
d(this, "ldapAutoCreateFactor1", "ldap");
|
|
3643
|
+
m("ldapAutoCreateAccount", g.Boolean, this, t, "LDAP_AUTO_CREATE_ACCOUNT"), m("ldapAutoCreateFactor1", g.Boolean, this, t, "LDAP_AUTO_CREATE_FACTOR1"), this.ldapStorage = e;
|
|
3643
3644
|
}
|
|
3644
3645
|
/**
|
|
3645
3646
|
* Authenticates the user, returning a the user as a {@link User} object.
|
|
@@ -3656,9 +3657,9 @@ class Dt extends be {
|
|
|
3656
3657
|
let i;
|
|
3657
3658
|
if (this.ldapAutoCreateAccount)
|
|
3658
3659
|
try {
|
|
3659
|
-
i = (await this.ldapStorage.getUserByUsername(e.username)).user;
|
|
3660
|
+
i = (await this.ldapStorage.getUserByUsername(e.username)).user, i.factor1 = this.ldapAutoCreateFactor1;
|
|
3660
3661
|
} catch {
|
|
3661
|
-
i = await this.ldapStorage.createUser(e, r);
|
|
3662
|
+
i = await this.ldapStorage.createUser({ factor1: this.ldapAutoCreateFactor1, ...e }, r);
|
|
3662
3663
|
}
|
|
3663
3664
|
else
|
|
3664
3665
|
i = (await this.ldapStorage.getUserByUsername(e.username)).user;
|
|
@@ -5761,7 +5762,7 @@ class zt {
|
|
|
5761
5762
|
otp: _,
|
|
5762
5763
|
deviceCode: C
|
|
5763
5764
|
}) {
|
|
5764
|
-
var
|
|
5765
|
+
var O, V, j;
|
|
5765
5766
|
const T = this.inferFlowFromPost(s, a);
|
|
5766
5767
|
if (!T) return {
|
|
5767
5768
|
error: "server_error",
|
|
@@ -5816,11 +5817,11 @@ class zt {
|
|
|
5816
5817
|
let P;
|
|
5817
5818
|
if (N.username)
|
|
5818
5819
|
try {
|
|
5819
|
-
const { user:
|
|
5820
|
-
P =
|
|
5821
|
-
} catch (
|
|
5820
|
+
const { user: F } = await ((O = this.userStorage) == null ? void 0 : O.getUserByUsername(N.username));
|
|
5821
|
+
P = F;
|
|
5822
|
+
} catch (F) {
|
|
5822
5823
|
return u.logger.error(f({
|
|
5823
|
-
err:
|
|
5824
|
+
err: F,
|
|
5824
5825
|
msg: "Couldn't get user for refresh token. Doesn't exist?",
|
|
5825
5826
|
username: N.username
|
|
5826
5827
|
})), {
|
|
@@ -5829,11 +5830,11 @@ class zt {
|
|
|
5829
5830
|
};
|
|
5830
5831
|
}
|
|
5831
5832
|
try {
|
|
5832
|
-
const
|
|
5833
|
-
await this.keyStorage.deleteKey(
|
|
5834
|
-
} catch (
|
|
5835
|
-
const I = o.asCrossauthError(
|
|
5836
|
-
u.logger.debug(f({ err:
|
|
5833
|
+
const F = U.refreshToken + v.hash(n);
|
|
5834
|
+
await this.keyStorage.deleteKey(F);
|
|
5835
|
+
} catch (F) {
|
|
5836
|
+
const I = o.asCrossauthError(F);
|
|
5837
|
+
u.logger.debug(f({ err: F })), u.logger.warn(f({ msg: "Cannot delete refresh token", cerr: I }));
|
|
5837
5838
|
}
|
|
5838
5839
|
return await this.makeAccessToken({
|
|
5839
5840
|
client: A,
|
|
@@ -5847,11 +5848,11 @@ class zt {
|
|
|
5847
5848
|
const {
|
|
5848
5849
|
scopes: N,
|
|
5849
5850
|
error: P,
|
|
5850
|
-
error_description:
|
|
5851
|
+
error_description: F
|
|
5851
5852
|
} = await this.validateAndPersistScope(e, t, void 0);
|
|
5852
5853
|
return P ? {
|
|
5853
5854
|
error: P,
|
|
5854
|
-
error_description:
|
|
5855
|
+
error_description: F
|
|
5855
5856
|
} : await this.makeAccessToken({
|
|
5856
5857
|
client: A,
|
|
5857
5858
|
client_secret: i,
|
|
@@ -5891,11 +5892,11 @@ class zt {
|
|
|
5891
5892
|
const {
|
|
5892
5893
|
scopes: N,
|
|
5893
5894
|
error: P,
|
|
5894
|
-
error_description:
|
|
5895
|
+
error_description: F
|
|
5895
5896
|
} = await this.validateAndPersistScope(e, t, K);
|
|
5896
5897
|
return P ? {
|
|
5897
5898
|
error: P,
|
|
5898
|
-
error_description:
|
|
5899
|
+
error_description: F
|
|
5899
5900
|
} : K.factor2 ? this.allowedFactor2.length > 0 && (K.state == E.factor2ResetNeeded || !this.allowedFactor2.includes(K.factor2 ? K.factor2 : "none")) ? {
|
|
5900
5901
|
error: "access_denied",
|
|
5901
5902
|
error_description: "2FA method not allowed or needs to be reconfigured"
|
|
@@ -5911,12 +5912,12 @@ class zt {
|
|
|
5911
5912
|
const {
|
|
5912
5913
|
scopes: N,
|
|
5913
5914
|
error: P,
|
|
5914
|
-
error_description:
|
|
5915
|
+
error_description: F
|
|
5915
5916
|
} = await this.validateAndPersistScope(e, t, void 0);
|
|
5916
5917
|
if (P)
|
|
5917
5918
|
return {
|
|
5918
5919
|
error: P,
|
|
5919
|
-
error_description:
|
|
5920
|
+
error_description: F
|
|
5920
5921
|
};
|
|
5921
5922
|
if (!_)
|
|
5922
5923
|
return {
|
|
@@ -5974,12 +5975,12 @@ class zt {
|
|
|
5974
5975
|
const {
|
|
5975
5976
|
scopes: N,
|
|
5976
5977
|
error: P,
|
|
5977
|
-
error_description:
|
|
5978
|
+
error_description: F
|
|
5978
5979
|
} = await this.validateAndPersistScope(e, t, void 0);
|
|
5979
5980
|
if (P)
|
|
5980
5981
|
return {
|
|
5981
5982
|
error: P,
|
|
5982
|
-
error_description:
|
|
5983
|
+
error_description: F
|
|
5983
5984
|
};
|
|
5984
5985
|
if (!y || !p)
|
|
5985
5986
|
return {
|
|
@@ -6053,15 +6054,15 @@ class zt {
|
|
|
6053
6054
|
try {
|
|
6054
6055
|
N = await this.keyStorage.getKey(U.deviceCode + C);
|
|
6055
6056
|
} catch (P) {
|
|
6056
|
-
const
|
|
6057
|
-
return u.logger.debug(f({ err:
|
|
6057
|
+
const F = o.asCrossauthError(P);
|
|
6058
|
+
return u.logger.debug(f({ err: F })), u.logger.error(f({ msg: "Couldn't get device code", cerr: F })), {
|
|
6058
6059
|
error: "accerss_denied",
|
|
6059
6060
|
error_description: "Invalid device code"
|
|
6060
6061
|
};
|
|
6061
6062
|
}
|
|
6062
6063
|
try {
|
|
6063
|
-
const P = JSON.parse(N.data ?? "{}"),
|
|
6064
|
-
if (N.expires &&
|
|
6064
|
+
const P = JSON.parse(N.data ?? "{}"), F = (/* @__PURE__ */ new Date()).getTime();
|
|
6065
|
+
if (N.expires && F > N.expires.getTime())
|
|
6065
6066
|
return await this.deleteDeviceCode(C), {
|
|
6066
6067
|
error: "expired_token",
|
|
6067
6068
|
error_description: "Code has expired"
|
|
@@ -6083,8 +6084,8 @@ class zt {
|
|
|
6083
6084
|
});
|
|
6084
6085
|
}
|
|
6085
6086
|
} catch (P) {
|
|
6086
|
-
const
|
|
6087
|
-
return u.logger.debug(f({ err:
|
|
6087
|
+
const F = o.asCrossauthError(P);
|
|
6088
|
+
return u.logger.debug(f({ err: F })), u.logger.error(f({ msg: "Couldn't get device code", cerr: F })), await this.deleteDeviceCode(C), {
|
|
6088
6089
|
error: "accerss_denied",
|
|
6089
6090
|
error_description: "Invalid device code"
|
|
6090
6091
|
};
|
|
@@ -6656,17 +6657,17 @@ class zt {
|
|
|
6656
6657
|
let K;
|
|
6657
6658
|
try {
|
|
6658
6659
|
K = await this.keyStorage.getKey(U.authorizationCode + v.hash(e)), h = x.decodeData(K.data);
|
|
6659
|
-
} catch (
|
|
6660
|
-
return u.logger.debug(f({ err:
|
|
6660
|
+
} catch (O) {
|
|
6661
|
+
return u.logger.debug(f({ err: O })), {
|
|
6661
6662
|
error: "access_denied",
|
|
6662
6663
|
error_description: "Invalid or expired authorization code"
|
|
6663
6664
|
};
|
|
6664
6665
|
}
|
|
6665
6666
|
try {
|
|
6666
6667
|
await this.keyStorage.deleteKey(K.value);
|
|
6667
|
-
} catch (
|
|
6668
|
+
} catch (O) {
|
|
6668
6669
|
u.logger.warn(f({
|
|
6669
|
-
err:
|
|
6670
|
+
err: O,
|
|
6670
6671
|
msg: "Couldn't delete authorization code from storatge",
|
|
6671
6672
|
client_id: s == null ? void 0 : s.client_id
|
|
6672
6673
|
}));
|
|
@@ -6707,13 +6708,13 @@ class zt {
|
|
|
6707
6708
|
type: "access"
|
|
6708
6709
|
};
|
|
6709
6710
|
C = this.addClaims(C, this.accessTokenClaims, i, n), i && (C.scope = i), this.accessTokenExpiry != null && (C.exp = y + this.accessTokenExpiry, p = new Date(w.getTime() + this.accessTokenExpiry * 1e3 + this.clockTolerance * 1e3)), this.audience && (C.aud = this.audience);
|
|
6710
|
-
const T = await new Promise((K,
|
|
6711
|
+
const T = await new Promise((K, O) => {
|
|
6711
6712
|
se.sign(
|
|
6712
6713
|
C,
|
|
6713
6714
|
this.secretOrPrivateKey,
|
|
6714
6715
|
{ algorithm: this.jwtAlgorithmChecked, keyid: "1" },
|
|
6715
6716
|
(V, j) => {
|
|
6716
|
-
j ? K(j) :
|
|
6717
|
+
j ? K(j) : O(V || new o(
|
|
6717
6718
|
l.Unauthorized,
|
|
6718
6719
|
"Couldn't create jwt"
|
|
6719
6720
|
));
|
|
@@ -6730,7 +6731,7 @@ class zt {
|
|
|
6730
6731
|
let k;
|
|
6731
6732
|
if (i && i.includes("openid")) {
|
|
6732
6733
|
const K = v.uuid();
|
|
6733
|
-
let
|
|
6734
|
+
let O = {
|
|
6734
6735
|
aud: s.client_id,
|
|
6735
6736
|
jti: K,
|
|
6736
6737
|
iat: y,
|
|
@@ -6738,7 +6739,7 @@ class zt {
|
|
|
6738
6739
|
sub: h.username,
|
|
6739
6740
|
type: "id"
|
|
6740
6741
|
};
|
|
6741
|
-
if (i.includes("email") && (n != null && n.email) && (
|
|
6742
|
+
if (i.includes("email") && (n != null && n.email) && (O.email = n.email), i.includes("address") && n && "address" in n && (O.address = n.address), i.includes("phone") && n && "phone" in n && (O.phone = n.phone), i.includes("profile") && n)
|
|
6742
6743
|
for (let V of [
|
|
6743
6744
|
"name",
|
|
6744
6745
|
"family_name",
|
|
@@ -6755,10 +6756,10 @@ class zt {
|
|
|
6755
6756
|
"locale",
|
|
6756
6757
|
"updated_at"
|
|
6757
6758
|
])
|
|
6758
|
-
|
|
6759
|
-
|
|
6759
|
+
O[V] = n[V];
|
|
6760
|
+
O = this.addClaims(O, this.idTokenClaims, i, n), O.scope = i, this.accessTokenExpiry != null && (O.exp = y + this.accessTokenExpiry), k = await new Promise((V, j) => {
|
|
6760
6761
|
se.sign(
|
|
6761
|
-
|
|
6762
|
+
O,
|
|
6762
6763
|
this.secretOrPrivateKey,
|
|
6763
6764
|
{
|
|
6764
6765
|
algorithm: this.jwtAlgorithmChecked,
|
|
@@ -6780,7 +6781,7 @@ class zt {
|
|
|
6780
6781
|
client_id: s.client_id
|
|
6781
6782
|
};
|
|
6782
6783
|
i && (K.scope = i);
|
|
6783
|
-
let
|
|
6784
|
+
let O;
|
|
6784
6785
|
const j = {
|
|
6785
6786
|
jti: v.uuid(),
|
|
6786
6787
|
iat: y,
|
|
@@ -6788,13 +6789,13 @@ class zt {
|
|
|
6788
6789
|
sub: h.username,
|
|
6789
6790
|
type: "refresh"
|
|
6790
6791
|
};
|
|
6791
|
-
this.refreshTokenExpiry != null && (j.exp = y + this.refreshTokenExpiry,
|
|
6792
|
+
this.refreshTokenExpiry != null && (j.exp = y + this.refreshTokenExpiry, O = this.refreshTokenExpiry ? new Date(y + this.refreshTokenExpiry * 1e3 + this.clockTolerance * 1e3) : void 0), this.oauthIssuer && (j.aud = this.oauthIssuer), A = await new Promise((N, P) => {
|
|
6792
6793
|
se.sign(
|
|
6793
6794
|
j,
|
|
6794
6795
|
this.secretOrPrivateKey,
|
|
6795
6796
|
{ algorithm: this.jwtAlgorithmChecked, keyid: "1" },
|
|
6796
|
-
(
|
|
6797
|
-
I ? N(I) : P(
|
|
6797
|
+
(F, I) => {
|
|
6798
|
+
I ? N(I) : P(F || new o(
|
|
6798
6799
|
l.Unauthorized,
|
|
6799
6800
|
"Couldn't create jwt"
|
|
6800
6801
|
));
|
|
@@ -6805,7 +6806,7 @@ class zt {
|
|
|
6805
6806
|
// to avoid user storage dependency
|
|
6806
6807
|
U.refreshToken + v.hash(A),
|
|
6807
6808
|
w,
|
|
6808
|
-
|
|
6809
|
+
O,
|
|
6809
6810
|
JSON.stringify(K)
|
|
6810
6811
|
));
|
|
6811
6812
|
}
|
|
@@ -7352,9 +7353,9 @@ export {
|
|
|
7352
7353
|
nt as OAuthTokenConsumer,
|
|
7353
7354
|
g as ParamType,
|
|
7354
7355
|
be as PasswordAuthenticator,
|
|
7355
|
-
|
|
7356
|
+
Ft as PostgresKeyStorage,
|
|
7356
7357
|
Nt as PostgresOAuthAuthorizationStorage,
|
|
7357
|
-
|
|
7358
|
+
Ot as PostgresOAuthClientStorage,
|
|
7358
7359
|
Kt as PostgresUserStorage,
|
|
7359
7360
|
kt as PrismaKeyStorage,
|
|
7360
7361
|
bt as PrismaOAuthAuthorizationStorage,
|
package/dist/oauth/client.d.ts
CHANGED
|
@@ -37,6 +37,12 @@ export interface OAuthClientOptions extends OAuthTokenConsumerOptions {
|
|
|
37
37
|
* Default `device_authorization`
|
|
38
38
|
*/
|
|
39
39
|
deviceAuthorizationUrl?: string;
|
|
40
|
+
/**
|
|
41
|
+
* If set to true, users must also have a local account to log in
|
|
42
|
+
* with OIDC.
|
|
43
|
+
* Default false
|
|
44
|
+
*/
|
|
45
|
+
requireLocalAccount?: boolean;
|
|
40
46
|
/**
|
|
41
47
|
* If using the BFF method, you can also create a user in the sesion
|
|
42
48
|
* when the token is received, just like session management
|
|
@@ -51,6 +57,8 @@ export interface OAuthClientOptions extends OAuthTokenConsumerOptions {
|
|
|
51
57
|
*
|
|
52
58
|
* Matching is done in the fields given in `userMatchField` and
|
|
53
59
|
* `idTokenMatchField`.
|
|
60
|
+
*
|
|
61
|
+
* Default is `idToken`, which does not require a local account
|
|
54
62
|
*/
|
|
55
63
|
userCreationType?: "idToken" | "merge" | "embed" | "custom";
|
|
56
64
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/oauth/client.ts"],"names":[],"mappings":"AACA,OAAO,EAA8C,eAAe,EAAK,MAAM,mBAAmB,CAAC;AAGnG,OAAO,EAEH,KAAK,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB;IAEjE;;OAEG;IACH,WAAW,CAAC,EAAG,MAAM,CAAC;IAEtB;;SAEK;IACL,cAAc,CAAC,EAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,EAAG,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAG,MAAM,CAAC;IAExB;;OAEG;IACH,YAAY,CAAC,EAAG,MAAM,CAAC;IAEvB;;OAEG;IACH,mBAAmB,CAAC,EAAG,OAAO,GAAG,MAAM,CAAC;IAExC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAG,MAAM,CAAC;IAEjC
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/oauth/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crossauth/backend",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.36",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.cjs",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"sonic-boom": "^3.7.0",
|
|
71
71
|
"sqlite3": "^5.1.7",
|
|
72
72
|
"twilio": "^5.0.3",
|
|
73
|
-
"@crossauth/common": "^0.0.
|
|
73
|
+
"@crossauth/common": "^0.0.36"
|
|
74
74
|
},
|
|
75
75
|
"scripts": {
|
|
76
76
|
"dev": "vite",
|