@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/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 Oe, createHash as Fe, pbkdf2 as Ne, createHmac as ie, createCipheriv as Re, createDecipheriv as De, randomInt as ee } from "node:crypto";
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 Ot extends qe {
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 Ft extends We {
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 Oe();
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 Fe("sha256").update(s).digest("base64url");
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
- m("ldapAutoCreateAccount", g.Boolean, this, t, "LDAP_AUTO_CREATE_ACCOUNT"), this.ldapStorage = e;
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 F, V, j;
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: O } = await ((F = this.userStorage) == null ? void 0 : F.getUserByUsername(N.username));
5820
- P = O;
5821
- } catch (O) {
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: O,
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 O = U.refreshToken + v.hash(n);
5833
- await this.keyStorage.deleteKey(O);
5834
- } catch (O) {
5835
- const I = o.asCrossauthError(O);
5836
- u.logger.debug(f({ err: O })), u.logger.warn(f({ msg: "Cannot delete refresh token", cerr: I }));
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: O
5851
+ error_description: F
5851
5852
  } = await this.validateAndPersistScope(e, t, void 0);
5852
5853
  return P ? {
5853
5854
  error: P,
5854
- error_description: O
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: O
5895
+ error_description: F
5895
5896
  } = await this.validateAndPersistScope(e, t, K);
5896
5897
  return P ? {
5897
5898
  error: P,
5898
- error_description: O
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: O
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: O
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: O
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: O
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 O = o.asCrossauthError(P);
6057
- return u.logger.debug(f({ err: O })), u.logger.error(f({ msg: "Couldn't get device code", cerr: O })), {
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 ?? "{}"), O = (/* @__PURE__ */ new Date()).getTime();
6064
- if (N.expires && O > N.expires.getTime())
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 O = o.asCrossauthError(P);
6087
- return u.logger.debug(f({ err: O })), u.logger.error(f({ msg: "Couldn't get device code", cerr: O })), await this.deleteDeviceCode(C), {
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 (F) {
6660
- return u.logger.debug(f({ err: F })), {
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 (F) {
6668
+ } catch (O) {
6668
6669
  u.logger.warn(f({
6669
- err: F,
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, F) => {
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) : F(V || new o(
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 F = {
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) && (F.email = n.email), i.includes("address") && n && "address" in n && (F.address = n.address), i.includes("phone") && n && "phone" in n && (F.phone = n.phone), i.includes("profile") && n)
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
- F[V] = n[V];
6759
- F = this.addClaims(F, this.idTokenClaims, i, n), F.scope = i, this.accessTokenExpiry != null && (F.exp = y + this.accessTokenExpiry), k = await new Promise((V, j) => {
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
- F,
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 F;
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, F = 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
+ 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
- (O, I) => {
6797
- I ? N(I) : P(O || new o(
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
- F,
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
- Ot as PostgresKeyStorage,
7356
+ Ft as PostgresKeyStorage,
7356
7357
  Nt as PostgresOAuthAuthorizationStorage,
7357
- Ft as PostgresOAuthClientStorage,
7358
+ Ot as PostgresOAuthClientStorage,
7358
7359
  Kt as PostgresUserStorage,
7359
7360
  kt as PrismaKeyStorage,
7360
7361
  bt as PrismaOAuthAuthorizationStorage,
@@ -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":"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"}
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.34",
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.34"
73
+ "@crossauth/common": "^0.0.36"
74
74
  },
75
75
  "scripts": {
76
76
  "dev": "vite",