@verdaccio/auth 8.0.1 → 8.0.3

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/build/auth.js CHANGED
@@ -18,6 +18,9 @@ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArra
18
18
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
19
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
20
20
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
21
24
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
22
25
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
23
26
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -507,12 +510,17 @@ var Auth = exports.Auth = /*#__PURE__*/function () {
507
510
  }
508
511
  var _ref4 = parsedCredentials,
509
512
  user = _ref4.user,
510
- password = _ref4.password;
513
+ password = _ref4.password,
514
+ tokenKey = _ref4.tokenKey;
511
515
  debug('authenticating %o', user);
512
516
  this.authenticate(user, password, function (err, user) {
513
517
  if (!err) {
514
518
  debug('generating a remote user');
515
- req.remote_user = user;
519
+ req.remote_user = tokenKey ? _objectSpread(_objectSpread({}, user), {}, {
520
+ token: {
521
+ key: tokenKey
522
+ }
523
+ }) : user;
516
524
  next();
517
525
  } else {
518
526
  debug('generating anonymous user');
@@ -545,11 +553,16 @@ var Auth = exports.Auth = /*#__PURE__*/function () {
545
553
  debug('api middleware credentials %o', credentials === null || credentials === void 0 ? void 0 : credentials.name);
546
554
  if (credentials) {
547
555
  var user = credentials.user,
548
- password = credentials.password;
556
+ password = credentials.password,
557
+ tokenKey = credentials.tokenKey;
549
558
  debug('authenticating %o', user);
550
559
  this.authenticate(user, password, function (err, user) {
551
560
  if (!err) {
552
- req.remote_user = user;
561
+ req.remote_user = tokenKey ? _objectSpread(_objectSpread({}, user), {}, {
562
+ token: {
563
+ key: tokenKey
564
+ }
565
+ }) : user;
553
566
  debug('generating a remote user');
554
567
  next();
555
568
  } else {
@@ -622,11 +635,11 @@ var Auth = exports.Auth = /*#__PURE__*/function () {
622
635
  key: "jwtEncrypt",
623
636
  value: function () {
624
637
  var _jwtEncrypt = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(user, signOptions) {
625
- var real_groups, name, groups, realGroupsValidated, groupedGroups, payload, token;
638
+ var real_groups, name, groups, tokenMetadata, realGroupsValidated, groupedGroups, payload, signedToken;
626
639
  return _regenerator().w(function (_context4) {
627
640
  while (1) switch (_context4.n) {
628
641
  case 0:
629
- real_groups = user.real_groups, name = user.name, groups = user.groups;
642
+ real_groups = user.real_groups, name = user.name, groups = user.groups, tokenMetadata = user.token;
630
643
  debug('jwt encrypt %o', name);
631
644
  realGroupsValidated = _lodash["default"].isNil(real_groups) ? [] : real_groups;
632
645
  groupedGroups = _lodash["default"].isNil(groups) ? real_groups : Array.from(new Set(_toConsumableArray(groups.concat(realGroupsValidated))));
@@ -635,11 +648,16 @@ var Auth = exports.Auth = /*#__PURE__*/function () {
635
648
  name: name,
636
649
  groups: groupedGroups
637
650
  };
651
+ if (tokenMetadata !== null && tokenMetadata !== void 0 && tokenMetadata.key) {
652
+ payload.token = {
653
+ key: tokenMetadata.key
654
+ };
655
+ }
638
656
  _context4.n = 1;
639
657
  return (0, _signature.signPayload)(payload, this.secret, signOptions);
640
658
  case 1:
641
- token = _context4.v;
642
- return _context4.a(2, token);
659
+ signedToken = _context4.v;
660
+ return _context4.a(2, signedToken);
643
661
  }
644
662
  }, _callee4, this);
645
663
  }));
package/build/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","names":["_debug","_interopRequireDefault","require","_lodash","_verdaccioHtpasswd","_config","_core","_loaders","_signature","_utils","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_toConsumableArray","r","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","Array","from","isArray","_arrayLikeToArray","_createForOfIteratorHelper","t","length","_n","F","s","n","done","value","f","a","u","call","next","toString","slice","name","test","_regenerator","toStringTag","i","c","Generator","Object","create","_regeneratorDefine2","p","y","G","v","d","bind","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_toPrimitive","toPrimitive","String","Number","debug","buildDebug","Auth","exports","config","logger","options","undefined","legacyMergeConfigs","secret","plugins","_init","_callee","_context","loadPlugin","auth","loadDefaultPlugin","applyFallbackPluginMethods","init","authPlugin","HTPasswd","file","info","pluginCategory","PLUGIN_CATEGORY","AUTHENTICATION","error","_loadPlugin","_callee2","_this$config$server$p","_this$config","_context2","asyncLoadPlugin","plugin","authenticate","allow_access","allow_publish","server","pluginPrefix","PLUGIN_PREFIX","push","getDefaultPluginMethods","changePassword","username","password","newPassword","cb","_this","validPlugins","_","filter","isFunction","isEmpty","errorUtils","getInternalError","SUPPORT_ERRORS","PLUGIN_MISSING_INTERFACE","_iterator","_step","isNil","err","profile","_invalidateToken","_callee3","token","_context3","console","log","invalidateToken","_x","shift","groups","message","isString","isGroupValid","API_ERROR","BAD_FORMAT_USER_GROUP","createRemoteUser","add_user","user","self","method","adduser","warningUtils","emit","Codes","VERWAR006","ok","_ref","callback","_this2","packageName","packageVersion","pkg","assign","version","authUtils","getMatchedPackagesSpec","packages","trace","allow_unpublish","_ref2","_this3","_ref3","_this4","apiJWTmiddleware","_this5","helpers","createAnonymousRemoteUser","_iterator2","_step2","req","res","pause","resume","remote_user","remoteUser","locals","authorization","headers","isAuthHeaderValid","getBadRequest","BAD_AUTH_HEADER","_this5$config","security","isAESLegacy","handleAESMiddleware","handleJWTAPIMiddleware","_parseAuthTokenHeader","parseAuthTokenHeader","scheme","toUpperCase","TOKEN_BASIC","credentials","convertPayloadToBase64","parsedCredentials","parseBasicPayload","BAD_USERNAME_PASSWORD","_ref4","getMiddlewareCredentials","getForbidden","_isRemoteUserValid","isUndefined","webUIJWTmiddleware","_this6","status","statusCode","send","replace","concat","TOKEN_BEARER","verifyJWTPayload","_unused","_ref5","_jwtEncrypt","_callee4","signOptions","real_groups","realGroupsValidated","groupedGroups","payload","_context4","Set","signPayload","jwtEncrypt","_x2","_x3","aesEncrypt","TOKEN_VALID_LENGTH","aesEncryptDeprecated","Buffer"],"sources":["../src/auth.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\nimport { HTPasswd } from 'verdaccio-htpasswd';\n\nimport { TOKEN_VALID_LENGTH, createAnonymousRemoteUser, createRemoteUser } from '@verdaccio/config';\nimport type { VerdaccioError, pluginUtils } from '@verdaccio/core';\nimport {\n API_ERROR,\n PLUGIN_CATEGORY,\n PLUGIN_PREFIX,\n SUPPORT_ERRORS,\n TOKEN_BASIC,\n TOKEN_BEARER,\n authUtils,\n errorUtils,\n warningUtils,\n} from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport {\n aesEncrypt,\n aesEncryptDeprecated,\n parseBasicPayload,\n signPayload,\n} from '@verdaccio/signature';\nimport type {\n AllowAccess,\n Callback,\n Config,\n JWTSignOptions,\n Logger,\n PackageAccess,\n RemoteUser,\n Security,\n} from '@verdaccio/types';\n\nimport type {\n $RequestExtend,\n $ResponseExtend,\n AESPayload,\n IAuthMiddleware,\n NextFunction,\n TokenEncryption,\n} from './types';\nimport {\n convertPayloadToBase64,\n getDefaultPluginMethods,\n getMiddlewareCredentials,\n isAESLegacy,\n isAuthHeaderValid,\n parseAuthTokenHeader,\n verifyJWTPayload,\n} from './utils';\n\nconst debug = buildDebug('verdaccio:auth');\n\nclass Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {\n public config: Config;\n public secret: string;\n public logger: Logger;\n public plugins: pluginUtils.Auth<Config>[];\n public options: { legacyMergeConfigs: boolean };\n\n public constructor(config: Config, logger: Logger, options = { legacyMergeConfigs: false }) {\n this.config = config;\n this.secret = config.secret;\n this.logger = logger;\n this.plugins = [];\n this.options = options;\n if (!this.secret) {\n throw new TypeError('secret it is required value on initialize the auth class');\n }\n }\n\n public async init() {\n let plugins = await this.loadPlugin();\n\n debug('auth plugins found %s', plugins.length);\n // Missing auth config or no loaded plugins -> load default htpasswd plugin\n // Empty auth config (null) -> just use fallback methods\n if (this.config.auth !== null && (!plugins || plugins.length === 0)) {\n plugins = this.loadDefaultPlugin();\n }\n this.plugins = plugins;\n\n this.applyFallbackPluginMethods();\n }\n\n private loadDefaultPlugin() {\n debug('load default auth plugin');\n let authPlugin;\n try {\n authPlugin = new HTPasswd(\n { file: './htpasswd' },\n {\n config: this.config,\n logger: this.logger,\n }\n );\n this.logger.info(\n { name: 'verdaccio-htpasswd', pluginCategory: PLUGIN_CATEGORY.AUTHENTICATION },\n 'plugin @{name} successfully loaded (@{pluginCategory})'\n );\n } catch (error: any) {\n debug('error on loading auth htpasswd plugin stack: %o', error);\n this.logger.info({}, 'no auth plugin has been found');\n return [];\n }\n\n return [authPlugin];\n }\n\n private async loadPlugin() {\n return asyncLoadPlugin<pluginUtils.Auth<Config>>(\n this.config.auth,\n {\n config: this.config,\n logger: this.logger,\n },\n (plugin): boolean => {\n const { authenticate, allow_access, allow_publish } = plugin;\n\n return (\n typeof authenticate !== 'undefined' ||\n typeof allow_access !== 'undefined' ||\n typeof allow_publish !== 'undefined'\n );\n },\n this.options.legacyMergeConfigs,\n this.config?.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.AUTHENTICATION\n );\n }\n\n private applyFallbackPluginMethods(): void {\n this.plugins.push(getDefaultPluginMethods(this.logger));\n }\n\n public changePassword(\n username: string,\n password: string,\n newPassword: string,\n cb: Callback\n ): void {\n const validPlugins = _.filter(this.plugins, (plugin) => _.isFunction(plugin.changePassword));\n\n if (_.isEmpty(validPlugins)) {\n return cb(errorUtils.getInternalError(SUPPORT_ERRORS.PLUGIN_MISSING_INTERFACE));\n }\n\n for (const plugin of validPlugins) {\n if (_.isNil(plugin) || _.isFunction(plugin.changePassword) === false) {\n debug('auth plugin does not implement changePassword, trying next one');\n continue;\n } else {\n debug('updating password for %o', username);\n plugin.changePassword!(username, password, newPassword, (err, profile): void => {\n if (err) {\n this.logger.error(\n { username, err },\n `An error has been produced\n updating the password for @{username}. Error: @{err.message}`\n );\n return cb(err);\n }\n\n debug('updated password for %o was successful', username);\n return cb(null, profile);\n });\n }\n }\n }\n\n public async invalidateToken(token: string) {\n // eslint-disable-next-line no-console\n console.log('invalidate token pending to implement', token);\n return Promise.resolve();\n }\n\n public authenticate(\n username: string,\n password: string,\n cb: (error: VerdaccioError | null, user?: RemoteUser) => void\n ): void {\n const plugins = this.plugins.slice(0);\n (function next(): void {\n const plugin = plugins.shift();\n\n if (typeof plugin?.authenticate !== 'function') {\n return next();\n }\n\n debug('authenticating %o', username);\n plugin.authenticate(username, password, function (err: VerdaccioError | null, groups): void {\n if (err) {\n debug('authenticating for user %o failed. Error: %o', username, err?.message);\n return cb(err);\n }\n\n // Expect: SKIP if groups is falsey and not an array\n // with at least one item (truthy length)\n // Expect: CONTINUE otherwise (will error if groups is not\n // an array, but this is current behavior)\n // Caveat: STRING (if valid) will pass successfully\n // bug give unexpected results\n // Info: Cannot use `== false to check falsey values`\n if (!!groups && groups.length !== 0) {\n // TODO: create a better understanding of expectations\n if (_.isString(groups)) {\n throw new TypeError('plugin group error: invalid type for function');\n }\n const isGroupValid: boolean = _.isArray(groups);\n if (!isGroupValid) {\n throw new TypeError(API_ERROR.BAD_FORMAT_USER_GROUP);\n }\n\n debug('authentication for user %o was successfully. Groups: %o', username, groups);\n return cb(err, createRemoteUser(username, groups));\n }\n next();\n });\n })();\n }\n\n public add_user(\n user: string,\n password: string,\n cb: (error: VerdaccioError | null, user?: RemoteUser) => void\n ): void {\n const self = this;\n const plugins = this.plugins.slice(0);\n debug('add user %o', user);\n\n (function next(): void {\n let method = 'adduser';\n const plugin = plugins.shift();\n // @ts-expect-error future major (7.x) should remove this section\n if (typeof plugin.adduser === 'undefined' && typeof plugin.add_user === 'function') {\n method = 'add_user';\n warningUtils.emit(warningUtils.Codes.VERWAR006);\n }\n // @ts-ignore\n if (typeof plugin[method] !== 'function') {\n next();\n } else {\n // TODO: replace by adduser whenever add_user deprecation method has been removed\n // @ts-ignore\n plugin[method](\n user,\n password,\n function (err: VerdaccioError | null, ok?: boolean | string): void {\n if (err) {\n debug('the user %o could not be added. Error: %o', user, err?.message);\n return cb(err);\n }\n if (ok) {\n debug('the user %o has been added', user);\n return self.authenticate(user, password, cb);\n }\n debug('user could not be added, skip to next auth plugin');\n next();\n }\n );\n }\n })();\n }\n\n /**\n * Allow user to access a package.\n */\n public allow_access(\n { packageName, packageVersion }: pluginUtils.AuthPluginPackage,\n user: RemoteUser,\n callback: pluginUtils.AccessCallback\n ): void {\n const plugins = this.plugins.slice(0);\n const pkg = Object.assign(\n { name: packageName, version: packageVersion },\n authUtils.getMatchedPackagesSpec(packageName, this.config.packages)\n ) as AllowAccess & PackageAccess;\n\n debug('check access permissions for user %o to package %o', user.name, packageName);\n\n // Use const instead of function declaration so we can use this.logger\n const next = (): void => {\n const plugin = plugins.shift();\n\n if (typeof plugin?.allow_access !== 'function') {\n debug('plugin does not implement allow_access');\n return next();\n }\n\n plugin.allow_access(user, pkg, (err: VerdaccioError | null, ok?: boolean): void => {\n if (err) {\n debug('forbidden access. Error: %o', err);\n return callback(err);\n }\n\n if (ok) {\n debug('access was granted');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `access was granted for @{name} by @{user}`\n );\n return callback(null, ok);\n }\n\n // cb(null, false) causes next plugin to roll\n debug('access was denied. Rolling to next plugin');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `intermediate access denial for @{name} by @{user}, rolling to next plugin`\n );\n return next();\n });\n };\n\n return next();\n }\n\n public allow_unpublish(\n { packageName, packageVersion }: pluginUtils.AuthPluginPackage,\n user: RemoteUser,\n callback: Callback\n ): void {\n const plugins = this.plugins.slice(0);\n const pkg = Object.assign(\n { name: packageName, version: packageVersion },\n authUtils.getMatchedPackagesSpec(packageName, this.config.packages)\n );\n\n debug('check unpublish permissions for user %o to package %o', user.name, packageName);\n\n // Use const instead of function declaration so we can use this.logger\n const next = (): void => {\n const plugin = plugins.shift();\n\n if (typeof plugin?.allow_unpublish !== 'function') {\n debug('plugin does not implement allow_unpublish');\n return next();\n }\n\n plugin.allow_unpublish(user, pkg, (err: VerdaccioError | null, ok?: boolean): void => {\n if (err) {\n debug('forbidden unpublish. Error: %o', err);\n return callback(err);\n }\n\n // The following is different from the allow_access and allow_publish implementations:\n // If the packages config is missing an entry for \"unpublish\", the built-in default method\n // (or a plugin) will return undefined, which will trigger the allow_publish fallback.\n // (see utils.ts, handleSpecialUnpublish, callback(null, undefined))\n if (_.isNil(ok) === true) {\n debug('bypass unpublish for %o, publish will handle the access', packageName);\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `bypass unpublish for @{name} by @{user}, publish will handle the access`\n );\n return this.allow_publish({ packageName, packageVersion }, user, callback);\n }\n\n if (ok) {\n debug('unpublish was granted');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `unpublish was granted for @{name} by @{user}`\n );\n return callback(null, ok);\n }\n\n // cb(null, false) causes next plugin to roll\n debug('unpublish was denied. Rolling to next plugin');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `intermediate unpublish denial for @{name} by @{user}, rolling to next plugin`\n );\n return next();\n });\n };\n\n return next();\n }\n\n /**\n * Allow user to publish a package.\n */\n public allow_publish(\n { packageName, packageVersion }: pluginUtils.AuthPluginPackage,\n user: RemoteUser,\n callback: Callback\n ): void {\n const plugins = this.plugins.slice(0);\n const pkg = Object.assign(\n { name: packageName, version: packageVersion },\n authUtils.getMatchedPackagesSpec(packageName, this.config.packages)\n );\n\n debug('check publish permissions for user %o to package %o', user.name, packageName);\n\n // Use const instead of function declaration so we can use this.logger\n const next = (): void => {\n const plugin = plugins.shift();\n\n if (typeof plugin?.allow_publish !== 'function') {\n debug('plugin does not implement allow_publish');\n return next();\n }\n\n plugin.allow_publish(user, pkg, (err: VerdaccioError | null, ok?: boolean): void => {\n if (err) {\n debug('forbidden publish. Error: %o', err);\n return callback(err);\n }\n\n if (ok) {\n debug('publish was granted');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `publish was granted for @{name} by @{user}`\n );\n return callback(null, ok);\n }\n\n // cb(null, false) causes next plugin to roll\n debug('publish was denied. Rolling to next plugin');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `intermediate publish denial for @{name} by @{user}, rolling to next plugin`\n );\n return next();\n });\n };\n\n return next();\n }\n\n public apiJWTmiddleware(): any {\n debug('jwt middleware');\n const plugins = this.plugins.slice(0);\n const helpers = { createAnonymousRemoteUser, createRemoteUser };\n for (const plugin of plugins) {\n if (plugin.apiJWTmiddleware) {\n return plugin.apiJWTmiddleware(helpers);\n }\n }\n\n return (req: $RequestExtend, res: $ResponseExtend, _next: NextFunction) => {\n req.pause();\n const next = function (err?: VerdaccioError): NextFunction {\n req.resume();\n // uncomment this to reject users with bad auth headers\n // return _next.apply(null, arguments)\n // swallow error, user remains unauthorized\n // set remoteUserError to indicate that user was attempting authentication\n if (err) {\n req.remote_user.error = err.message;\n }\n\n return _next() as unknown as NextFunction;\n };\n\n // FUTURE: disabled, not removed yet but seems unreacable code\n // if (this._isRemoteUserValid(req.remote_user)) {\n // debug('jwt has a valid authentication header');\n // return next();\n // }\n\n // in case auth header does not exist we return anonymous function\n const remoteUser = createAnonymousRemoteUser();\n req.remote_user = remoteUser;\n res.locals.remote_user = remoteUser;\n\n const { authorization } = req.headers;\n if (_.isNil(authorization)) {\n debug('jwt, authentication header is missing');\n return next();\n }\n\n if (!isAuthHeaderValid(authorization)) {\n debug('api middleware authentication heather is invalid');\n return next(errorUtils.getBadRequest(API_ERROR.BAD_AUTH_HEADER));\n }\n const { secret, security } = this.config;\n\n if (isAESLegacy(security)) {\n debug('api middleware using legacy auth token');\n this.handleAESMiddleware(req, security, secret, authorization, next);\n } else {\n debug('api middleware using JWT auth token');\n this.handleJWTAPIMiddleware(req, security, secret, authorization, next);\n }\n };\n }\n\n private handleJWTAPIMiddleware(\n req: $RequestExtend,\n security: Security,\n secret: string,\n authorization: string,\n next: any\n ): void {\n debug('handle JWT api middleware');\n const { scheme, token } = parseAuthTokenHeader(authorization);\n if (scheme.toUpperCase() === TOKEN_BASIC.toUpperCase()) {\n debug('handle basic token');\n // this should happen when client tries to login with an existing user\n const credentials = convertPayloadToBase64(token).toString();\n const parsedCredentials = parseBasicPayload(credentials);\n if (!parsedCredentials) {\n debug('invalid basic credentials format (missing colon separator)');\n next(errorUtils.getBadRequest(API_ERROR.BAD_USERNAME_PASSWORD));\n return;\n }\n const { user, password } = parsedCredentials as AESPayload;\n debug('authenticating %o', user);\n this.authenticate(user, password, (err: VerdaccioError | null, user): void => {\n if (!err) {\n debug('generating a remote user');\n req.remote_user = user;\n next();\n } else {\n debug('generating anonymous user');\n req.remote_user = createAnonymousRemoteUser();\n next(err);\n }\n });\n } else {\n debug('handle jwt token');\n const credentials: any = getMiddlewareCredentials(security, secret, authorization);\n if (credentials) {\n // if the signature is valid we rely on it\n req.remote_user = credentials;\n debug('generating a remote user');\n next();\n } else {\n // with JWT throw 401\n debug('jwt invalid token');\n next(errorUtils.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD));\n }\n }\n }\n\n private handleAESMiddleware(\n req: $RequestExtend,\n security: Security,\n secret: string,\n authorization: string,\n next: Function\n ): void {\n debug('handle legacy api middleware');\n debug('api middleware has a secret? %o', typeof secret === 'string');\n debug('api middleware authorization %o', typeof authorization === 'string');\n const credentials: any = getMiddlewareCredentials(security, secret, authorization);\n debug('api middleware credentials %o', credentials?.name);\n if (credentials) {\n const { user, password } = credentials;\n debug('authenticating %o', user);\n this.authenticate(user, password, (err, user): void => {\n if (!err) {\n req.remote_user = user;\n debug('generating a remote user');\n next();\n } else {\n req.remote_user = createAnonymousRemoteUser();\n debug('generating anonymous user');\n next(err);\n }\n });\n } else {\n // we force npm client to ask again with basic authentication\n debug('legacy invalid header');\n return next(errorUtils.getBadRequest(API_ERROR.BAD_AUTH_HEADER));\n }\n }\n\n private _isRemoteUserValid(remote_user?: RemoteUser): boolean {\n return _.isUndefined(remote_user) === false && _.isUndefined(remote_user?.name) === false;\n }\n\n /**\n * JWT middleware for WebUI\n */\n public webUIJWTmiddleware() {\n return (req: $RequestExtend, res: $ResponseExtend, _next: NextFunction): void => {\n if (this._isRemoteUserValid(req.remote_user)) {\n return _next();\n }\n\n req.pause();\n const next = (err: VerdaccioError | void): void => {\n req.resume();\n if (err) {\n req.remote_user.error = err.message;\n res.status(err.statusCode).send(err.message);\n }\n\n return _next();\n };\n\n const { authorization } = req.headers;\n if (_.isNil(authorization)) {\n return next();\n }\n\n if (!isAuthHeaderValid(authorization)) {\n return next(errorUtils.getBadRequest(API_ERROR.BAD_AUTH_HEADER));\n }\n\n const token = (authorization || '').replace(`${TOKEN_BEARER} `, '');\n if (!token) {\n return next();\n }\n\n let credentials: RemoteUser | undefined;\n try {\n credentials = verifyJWTPayload(token, this.config.secret, this.config.security);\n } catch {\n // FIXME: intended behaviour, do we want it?\n }\n\n if (this._isRemoteUserValid(credentials)) {\n const { name, groups } = credentials as RemoteUser;\n req.remote_user = createRemoteUser(name as string, groups);\n } else {\n req.remote_user = createAnonymousRemoteUser();\n }\n\n next();\n };\n }\n\n public async jwtEncrypt(user: RemoteUser, signOptions: JWTSignOptions): Promise<string> {\n const { real_groups, name, groups } = user;\n debug('jwt encrypt %o', name);\n const realGroupsValidated = _.isNil(real_groups) ? [] : real_groups;\n const groupedGroups = _.isNil(groups)\n ? real_groups\n : Array.from(new Set([...groups.concat(realGroupsValidated)]));\n const payload: RemoteUser = {\n real_groups: realGroupsValidated,\n name,\n groups: groupedGroups,\n };\n const token: string = await signPayload(payload, this.secret, signOptions);\n\n return token;\n }\n\n /**\n * Encrypt a string.\n */\n public aesEncrypt(value: string): string | void {\n if (this.secret.length === TOKEN_VALID_LENGTH) {\n debug('signing with enhanced aes legacy');\n const token = aesEncrypt(value, this.secret);\n return token;\n } else {\n debug('signing with enhanced aes deprecated legacy');\n // deprecated aes (legacy) signature, only must be used for legacy version\n const token = aesEncryptDeprecated(Buffer.from(value), this.secret).toString('base64');\n return token;\n }\n }\n}\n\nexport { Auth };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"auth.js","names":["_debug","_interopRequireDefault","require","_lodash","_verdaccioHtpasswd","_config","_core","_loaders","_signature","_utils","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_toConsumableArray","r","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","Array","from","isArray","_arrayLikeToArray","ownKeys","t","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","_createForOfIteratorHelper","_n","F","s","n","done","f","a","u","call","next","toString","slice","name","test","_regenerator","toStringTag","i","c","Generator","create","_regeneratorDefine2","p","y","G","v","d","bind","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","_regeneratorDefine","_invoke","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_classCallCheck","_defineProperties","key","_createClass","_toPrimitive","toPrimitive","String","Number","debug","buildDebug","Auth","exports","config","logger","options","undefined","legacyMergeConfigs","secret","plugins","_init","_callee","_context","loadPlugin","auth","loadDefaultPlugin","applyFallbackPluginMethods","init","authPlugin","HTPasswd","file","info","pluginCategory","PLUGIN_CATEGORY","AUTHENTICATION","error","_loadPlugin","_callee2","_this$config$server$p","_this$config","_context2","asyncLoadPlugin","plugin","authenticate","allow_access","allow_publish","server","pluginPrefix","PLUGIN_PREFIX","getDefaultPluginMethods","changePassword","username","password","newPassword","cb","_this","validPlugins","_","isFunction","isEmpty","errorUtils","getInternalError","SUPPORT_ERRORS","PLUGIN_MISSING_INTERFACE","_iterator","_step","isNil","err","profile","_invalidateToken","_callee3","token","_context3","console","log","invalidateToken","_x","shift","groups","message","isString","isGroupValid","API_ERROR","BAD_FORMAT_USER_GROUP","createRemoteUser","add_user","user","self","method","adduser","warningUtils","emit","Codes","VERWAR006","ok","_ref","callback","_this2","packageName","packageVersion","pkg","assign","version","authUtils","getMatchedPackagesSpec","packages","trace","allow_unpublish","_ref2","_this3","_ref3","_this4","apiJWTmiddleware","_this5","helpers","createAnonymousRemoteUser","_iterator2","_step2","req","res","pause","resume","remote_user","remoteUser","locals","authorization","headers","isAuthHeaderValid","getBadRequest","BAD_AUTH_HEADER","_this5$config","security","isAESLegacy","handleAESMiddleware","handleJWTAPIMiddleware","_parseAuthTokenHeader","parseAuthTokenHeader","scheme","toUpperCase","TOKEN_BASIC","credentials","convertPayloadToBase64","parsedCredentials","parseBasicPayload","BAD_USERNAME_PASSWORD","_ref4","tokenKey","getMiddlewareCredentials","getForbidden","_isRemoteUserValid","isUndefined","webUIJWTmiddleware","_this6","status","statusCode","send","replace","concat","TOKEN_BEARER","verifyJWTPayload","_unused","_ref5","_jwtEncrypt","_callee4","signOptions","real_groups","tokenMetadata","realGroupsValidated","groupedGroups","payload","signedToken","_context4","Set","signPayload","jwtEncrypt","_x2","_x3","aesEncrypt","TOKEN_VALID_LENGTH","aesEncryptDeprecated","Buffer"],"sources":["../src/auth.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\nimport { HTPasswd } from 'verdaccio-htpasswd';\n\nimport { TOKEN_VALID_LENGTH, createAnonymousRemoteUser, createRemoteUser } from '@verdaccio/config';\nimport type { VerdaccioError, pluginUtils } from '@verdaccio/core';\nimport {\n API_ERROR,\n PLUGIN_CATEGORY,\n PLUGIN_PREFIX,\n SUPPORT_ERRORS,\n TOKEN_BASIC,\n TOKEN_BEARER,\n authUtils,\n errorUtils,\n warningUtils,\n} from '@verdaccio/core';\nimport { asyncLoadPlugin } from '@verdaccio/loaders';\nimport {\n aesEncrypt,\n aesEncryptDeprecated,\n parseBasicPayload,\n signPayload,\n} from '@verdaccio/signature';\nimport type {\n AllowAccess,\n Callback,\n Config,\n JWTSignOptions,\n Logger,\n PackageAccess,\n RemoteUser,\n Security,\n} from '@verdaccio/types';\n\nimport type {\n $RequestExtend,\n $ResponseExtend,\n AESPayload,\n IAuthMiddleware,\n NextFunction,\n TokenEncryption,\n} from './types';\nimport {\n convertPayloadToBase64,\n getDefaultPluginMethods,\n getMiddlewareCredentials,\n isAESLegacy,\n isAuthHeaderValid,\n parseAuthTokenHeader,\n verifyJWTPayload,\n} from './utils';\n\nconst debug = buildDebug('verdaccio:auth');\n\nclass Auth implements IAuthMiddleware, TokenEncryption, pluginUtils.IBasicAuth {\n public config: Config;\n public secret: string;\n public logger: Logger;\n public plugins: pluginUtils.Auth<Config>[];\n public options: { legacyMergeConfigs: boolean };\n\n public constructor(config: Config, logger: Logger, options = { legacyMergeConfigs: false }) {\n this.config = config;\n this.secret = config.secret;\n this.logger = logger;\n this.plugins = [];\n this.options = options;\n if (!this.secret) {\n throw new TypeError('secret it is required value on initialize the auth class');\n }\n }\n\n public async init() {\n let plugins = await this.loadPlugin();\n\n debug('auth plugins found %s', plugins.length);\n // Missing auth config or no loaded plugins -> load default htpasswd plugin\n // Empty auth config (null) -> just use fallback methods\n if (this.config.auth !== null && (!plugins || plugins.length === 0)) {\n plugins = this.loadDefaultPlugin();\n }\n this.plugins = plugins;\n\n this.applyFallbackPluginMethods();\n }\n\n private loadDefaultPlugin() {\n debug('load default auth plugin');\n let authPlugin;\n try {\n authPlugin = new HTPasswd(\n { file: './htpasswd' },\n {\n config: this.config,\n logger: this.logger,\n }\n );\n this.logger.info(\n { name: 'verdaccio-htpasswd', pluginCategory: PLUGIN_CATEGORY.AUTHENTICATION },\n 'plugin @{name} successfully loaded (@{pluginCategory})'\n );\n } catch (error: any) {\n debug('error on loading auth htpasswd plugin stack: %o', error);\n this.logger.info({}, 'no auth plugin has been found');\n return [];\n }\n\n return [authPlugin];\n }\n\n private async loadPlugin() {\n return asyncLoadPlugin<pluginUtils.Auth<Config>>(\n this.config.auth,\n {\n config: this.config,\n logger: this.logger,\n },\n (plugin): boolean => {\n const { authenticate, allow_access, allow_publish } = plugin;\n\n return (\n typeof authenticate !== 'undefined' ||\n typeof allow_access !== 'undefined' ||\n typeof allow_publish !== 'undefined'\n );\n },\n this.options.legacyMergeConfigs,\n this.config?.server?.pluginPrefix ?? PLUGIN_PREFIX,\n PLUGIN_CATEGORY.AUTHENTICATION\n );\n }\n\n private applyFallbackPluginMethods(): void {\n this.plugins.push(getDefaultPluginMethods(this.logger));\n }\n\n public changePassword(\n username: string,\n password: string,\n newPassword: string,\n cb: Callback\n ): void {\n const validPlugins = _.filter(this.plugins, (plugin) => _.isFunction(plugin.changePassword));\n\n if (_.isEmpty(validPlugins)) {\n return cb(errorUtils.getInternalError(SUPPORT_ERRORS.PLUGIN_MISSING_INTERFACE));\n }\n\n for (const plugin of validPlugins) {\n if (_.isNil(plugin) || _.isFunction(plugin.changePassword) === false) {\n debug('auth plugin does not implement changePassword, trying next one');\n continue;\n } else {\n debug('updating password for %o', username);\n plugin.changePassword!(username, password, newPassword, (err, profile): void => {\n if (err) {\n this.logger.error(\n { username, err },\n `An error has been produced\n updating the password for @{username}. Error: @{err.message}`\n );\n return cb(err);\n }\n\n debug('updated password for %o was successful', username);\n return cb(null, profile);\n });\n }\n }\n }\n\n public async invalidateToken(token: string) {\n // eslint-disable-next-line no-console\n console.log('invalidate token pending to implement', token);\n return Promise.resolve();\n }\n\n public authenticate(\n username: string,\n password: string,\n cb: (error: VerdaccioError | null, user?: RemoteUser) => void\n ): void {\n const plugins = this.plugins.slice(0);\n (function next(): void {\n const plugin = plugins.shift();\n\n if (typeof plugin?.authenticate !== 'function') {\n return next();\n }\n\n debug('authenticating %o', username);\n plugin.authenticate(username, password, function (err: VerdaccioError | null, groups): void {\n if (err) {\n debug('authenticating for user %o failed. Error: %o', username, err?.message);\n return cb(err);\n }\n\n // Expect: SKIP if groups is falsey and not an array\n // with at least one item (truthy length)\n // Expect: CONTINUE otherwise (will error if groups is not\n // an array, but this is current behavior)\n // Caveat: STRING (if valid) will pass successfully\n // bug give unexpected results\n // Info: Cannot use `== false to check falsey values`\n if (!!groups && groups.length !== 0) {\n // TODO: create a better understanding of expectations\n if (_.isString(groups)) {\n throw new TypeError('plugin group error: invalid type for function');\n }\n const isGroupValid: boolean = _.isArray(groups);\n if (!isGroupValid) {\n throw new TypeError(API_ERROR.BAD_FORMAT_USER_GROUP);\n }\n\n debug('authentication for user %o was successfully. Groups: %o', username, groups);\n return cb(err, createRemoteUser(username, groups));\n }\n next();\n });\n })();\n }\n\n public add_user(\n user: string,\n password: string,\n cb: (error: VerdaccioError | null, user?: RemoteUser) => void\n ): void {\n const self = this;\n const plugins = this.plugins.slice(0);\n debug('add user %o', user);\n\n (function next(): void {\n let method = 'adduser';\n const plugin = plugins.shift();\n // @ts-expect-error future major (7.x) should remove this section\n if (typeof plugin.adduser === 'undefined' && typeof plugin.add_user === 'function') {\n method = 'add_user';\n warningUtils.emit(warningUtils.Codes.VERWAR006);\n }\n // @ts-ignore\n if (typeof plugin[method] !== 'function') {\n next();\n } else {\n // TODO: replace by adduser whenever add_user deprecation method has been removed\n // @ts-ignore\n plugin[method](\n user,\n password,\n function (err: VerdaccioError | null, ok?: boolean | string): void {\n if (err) {\n debug('the user %o could not be added. Error: %o', user, err?.message);\n return cb(err);\n }\n if (ok) {\n debug('the user %o has been added', user);\n return self.authenticate(user, password, cb);\n }\n debug('user could not be added, skip to next auth plugin');\n next();\n }\n );\n }\n })();\n }\n\n /**\n * Allow user to access a package.\n */\n public allow_access(\n { packageName, packageVersion }: pluginUtils.AuthPluginPackage,\n user: RemoteUser,\n callback: pluginUtils.AccessCallback\n ): void {\n const plugins = this.plugins.slice(0);\n const pkg = Object.assign(\n { name: packageName, version: packageVersion },\n authUtils.getMatchedPackagesSpec(packageName, this.config.packages)\n ) as AllowAccess & PackageAccess;\n\n debug('check access permissions for user %o to package %o', user.name, packageName);\n\n // Use const instead of function declaration so we can use this.logger\n const next = (): void => {\n const plugin = plugins.shift();\n\n if (typeof plugin?.allow_access !== 'function') {\n debug('plugin does not implement allow_access');\n return next();\n }\n\n plugin.allow_access(user, pkg, (err: VerdaccioError | null, ok?: boolean): void => {\n if (err) {\n debug('forbidden access. Error: %o', err);\n return callback(err);\n }\n\n if (ok) {\n debug('access was granted');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `access was granted for @{name} by @{user}`\n );\n return callback(null, ok);\n }\n\n // cb(null, false) causes next plugin to roll\n debug('access was denied. Rolling to next plugin');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `intermediate access denial for @{name} by @{user}, rolling to next plugin`\n );\n return next();\n });\n };\n\n return next();\n }\n\n public allow_unpublish(\n { packageName, packageVersion }: pluginUtils.AuthPluginPackage,\n user: RemoteUser,\n callback: Callback\n ): void {\n const plugins = this.plugins.slice(0);\n const pkg = Object.assign(\n { name: packageName, version: packageVersion },\n authUtils.getMatchedPackagesSpec(packageName, this.config.packages)\n );\n\n debug('check unpublish permissions for user %o to package %o', user.name, packageName);\n\n // Use const instead of function declaration so we can use this.logger\n const next = (): void => {\n const plugin = plugins.shift();\n\n if (typeof plugin?.allow_unpublish !== 'function') {\n debug('plugin does not implement allow_unpublish');\n return next();\n }\n\n plugin.allow_unpublish(user, pkg, (err: VerdaccioError | null, ok?: boolean): void => {\n if (err) {\n debug('forbidden unpublish. Error: %o', err);\n return callback(err);\n }\n\n // The following is different from the allow_access and allow_publish implementations:\n // If the packages config is missing an entry for \"unpublish\", the built-in default method\n // (or a plugin) will return undefined, which will trigger the allow_publish fallback.\n // (see utils.ts, handleSpecialUnpublish, callback(null, undefined))\n if (_.isNil(ok) === true) {\n debug('bypass unpublish for %o, publish will handle the access', packageName);\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `bypass unpublish for @{name} by @{user}, publish will handle the access`\n );\n return this.allow_publish({ packageName, packageVersion }, user, callback);\n }\n\n if (ok) {\n debug('unpublish was granted');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `unpublish was granted for @{name} by @{user}`\n );\n return callback(null, ok);\n }\n\n // cb(null, false) causes next plugin to roll\n debug('unpublish was denied. Rolling to next plugin');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `intermediate unpublish denial for @{name} by @{user}, rolling to next plugin`\n );\n return next();\n });\n };\n\n return next();\n }\n\n /**\n * Allow user to publish a package.\n */\n public allow_publish(\n { packageName, packageVersion }: pluginUtils.AuthPluginPackage,\n user: RemoteUser,\n callback: Callback\n ): void {\n const plugins = this.plugins.slice(0);\n const pkg = Object.assign(\n { name: packageName, version: packageVersion },\n authUtils.getMatchedPackagesSpec(packageName, this.config.packages)\n );\n\n debug('check publish permissions for user %o to package %o', user.name, packageName);\n\n // Use const instead of function declaration so we can use this.logger\n const next = (): void => {\n const plugin = plugins.shift();\n\n if (typeof plugin?.allow_publish !== 'function') {\n debug('plugin does not implement allow_publish');\n return next();\n }\n\n plugin.allow_publish(user, pkg, (err: VerdaccioError | null, ok?: boolean): void => {\n if (err) {\n debug('forbidden publish. Error: %o', err);\n return callback(err);\n }\n\n if (ok) {\n debug('publish was granted');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `publish was granted for @{name} by @{user}`\n );\n return callback(null, ok);\n }\n\n // cb(null, false) causes next plugin to roll\n debug('publish was denied. Rolling to next plugin');\n this.logger.trace(\n { user: user.name, name: pkg.name },\n `intermediate publish denial for @{name} by @{user}, rolling to next plugin`\n );\n return next();\n });\n };\n\n return next();\n }\n\n public apiJWTmiddleware(): any {\n debug('jwt middleware');\n const plugins = this.plugins.slice(0);\n const helpers = { createAnonymousRemoteUser, createRemoteUser };\n for (const plugin of plugins) {\n if (plugin.apiJWTmiddleware) {\n return plugin.apiJWTmiddleware(helpers);\n }\n }\n\n return (req: $RequestExtend, res: $ResponseExtend, _next: NextFunction) => {\n req.pause();\n const next = function (err?: VerdaccioError): NextFunction {\n req.resume();\n // uncomment this to reject users with bad auth headers\n // return _next.apply(null, arguments)\n // swallow error, user remains unauthorized\n // set remoteUserError to indicate that user was attempting authentication\n if (err) {\n req.remote_user.error = err.message;\n }\n\n return _next() as unknown as NextFunction;\n };\n\n // FUTURE: disabled, not removed yet but seems unreacable code\n // if (this._isRemoteUserValid(req.remote_user)) {\n // debug('jwt has a valid authentication header');\n // return next();\n // }\n\n // in case auth header does not exist we return anonymous function\n const remoteUser = createAnonymousRemoteUser();\n req.remote_user = remoteUser;\n res.locals.remote_user = remoteUser;\n\n const { authorization } = req.headers;\n if (_.isNil(authorization)) {\n debug('jwt, authentication header is missing');\n return next();\n }\n\n if (!isAuthHeaderValid(authorization)) {\n debug('api middleware authentication heather is invalid');\n return next(errorUtils.getBadRequest(API_ERROR.BAD_AUTH_HEADER));\n }\n const { secret, security } = this.config;\n\n if (isAESLegacy(security)) {\n debug('api middleware using legacy auth token');\n this.handleAESMiddleware(req, security, secret, authorization, next);\n } else {\n debug('api middleware using JWT auth token');\n this.handleJWTAPIMiddleware(req, security, secret, authorization, next);\n }\n };\n }\n\n private handleJWTAPIMiddleware(\n req: $RequestExtend,\n security: Security,\n secret: string,\n authorization: string,\n next: any\n ): void {\n debug('handle JWT api middleware');\n const { scheme, token } = parseAuthTokenHeader(authorization);\n if (scheme.toUpperCase() === TOKEN_BASIC.toUpperCase()) {\n debug('handle basic token');\n // this should happen when client tries to login with an existing user\n const credentials = convertPayloadToBase64(token).toString();\n const parsedCredentials = parseBasicPayload(credentials);\n if (!parsedCredentials) {\n debug('invalid basic credentials format (missing colon separator)');\n next(errorUtils.getBadRequest(API_ERROR.BAD_USERNAME_PASSWORD));\n return;\n }\n const { user, password, tokenKey } = parsedCredentials as AESPayload;\n debug('authenticating %o', user);\n this.authenticate(user, password, (err: VerdaccioError | null, user): void => {\n if (!err) {\n debug('generating a remote user');\n req.remote_user = tokenKey ? { ...user, token: { key: tokenKey } } : user;\n next();\n } else {\n debug('generating anonymous user');\n req.remote_user = createAnonymousRemoteUser();\n next(err);\n }\n });\n } else {\n debug('handle jwt token');\n const credentials: any = getMiddlewareCredentials(security, secret, authorization);\n if (credentials) {\n // if the signature is valid we rely on it\n req.remote_user = credentials;\n debug('generating a remote user');\n next();\n } else {\n // with JWT throw 401\n debug('jwt invalid token');\n next(errorUtils.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD));\n }\n }\n }\n\n private handleAESMiddleware(\n req: $RequestExtend,\n security: Security,\n secret: string,\n authorization: string,\n next: Function\n ): void {\n debug('handle legacy api middleware');\n debug('api middleware has a secret? %o', typeof secret === 'string');\n debug('api middleware authorization %o', typeof authorization === 'string');\n const credentials: any = getMiddlewareCredentials(security, secret, authorization);\n debug('api middleware credentials %o', credentials?.name);\n if (credentials) {\n const { user, password, tokenKey } = credentials;\n debug('authenticating %o', user);\n this.authenticate(user, password, (err, user): void => {\n if (!err) {\n req.remote_user = tokenKey ? { ...user, token: { key: tokenKey } } : user;\n debug('generating a remote user');\n next();\n } else {\n req.remote_user = createAnonymousRemoteUser();\n debug('generating anonymous user');\n next(err);\n }\n });\n } else {\n // we force npm client to ask again with basic authentication\n debug('legacy invalid header');\n return next(errorUtils.getBadRequest(API_ERROR.BAD_AUTH_HEADER));\n }\n }\n\n private _isRemoteUserValid(remote_user?: RemoteUser): boolean {\n return _.isUndefined(remote_user) === false && _.isUndefined(remote_user?.name) === false;\n }\n\n /**\n * JWT middleware for WebUI\n */\n public webUIJWTmiddleware() {\n return (req: $RequestExtend, res: $ResponseExtend, _next: NextFunction): void => {\n if (this._isRemoteUserValid(req.remote_user)) {\n return _next();\n }\n\n req.pause();\n const next = (err: VerdaccioError | void): void => {\n req.resume();\n if (err) {\n req.remote_user.error = err.message;\n res.status(err.statusCode).send(err.message);\n }\n\n return _next();\n };\n\n const { authorization } = req.headers;\n if (_.isNil(authorization)) {\n return next();\n }\n\n if (!isAuthHeaderValid(authorization)) {\n return next(errorUtils.getBadRequest(API_ERROR.BAD_AUTH_HEADER));\n }\n\n const token = (authorization || '').replace(`${TOKEN_BEARER} `, '');\n if (!token) {\n return next();\n }\n\n let credentials: RemoteUser | undefined;\n try {\n credentials = verifyJWTPayload(token, this.config.secret, this.config.security);\n } catch {\n // FIXME: intended behaviour, do we want it?\n }\n\n if (this._isRemoteUserValid(credentials)) {\n const { name, groups } = credentials as RemoteUser;\n req.remote_user = createRemoteUser(name as string, groups);\n } else {\n req.remote_user = createAnonymousRemoteUser();\n }\n\n next();\n };\n }\n\n public async jwtEncrypt(user: RemoteUser, signOptions: JWTSignOptions): Promise<string> {\n const { real_groups, name, groups, token: tokenMetadata } = user;\n debug('jwt encrypt %o', name);\n const realGroupsValidated = _.isNil(real_groups) ? [] : real_groups;\n const groupedGroups = _.isNil(groups)\n ? real_groups\n : Array.from(new Set([...groups.concat(realGroupsValidated)]));\n const payload: RemoteUser = {\n real_groups: realGroupsValidated,\n name,\n groups: groupedGroups,\n };\n if (tokenMetadata?.key) {\n payload.token = { key: tokenMetadata.key };\n }\n const signedToken: string = await signPayload(payload, this.secret, signOptions);\n\n return signedToken;\n }\n\n /**\n * Encrypt a string.\n */\n public aesEncrypt(value: string): string | void {\n if (this.secret.length === TOKEN_VALID_LENGTH) {\n debug('signing with enhanced aes legacy');\n const token = aesEncrypt(value, this.secret);\n return token;\n } else {\n debug('signing with enhanced aes deprecated legacy');\n // deprecated aes (legacy) signature, only must be used for legacy version\n const token = aesEncryptDeprecated(Buffer.from(value), this.secret).toString('base64');\n return token;\n }\n }\n}\n\nexport { Auth };\n"],"mappings":"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","ignoreList":[]}
package/build/types.d.ts CHANGED
@@ -4,6 +4,7 @@ import type { AuthPackageAllow, JWTSignOptions, Logger, RemoteUser } from '@verd
4
4
  export interface AESPayload {
5
5
  user: string;
6
6
  password: string;
7
+ tokenKey?: string;
7
8
  }
8
9
  export type BasicPayload = AESPayload | void;
9
10
  export type AuthMiddlewarePayload = RemoteUser | BasicPayload;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { NextFunction, Request, Response } from 'express';\n\nimport type { VerdaccioError } from '@verdaccio/core';\nimport type { AuthPackageAllow, JWTSignOptions, Logger, RemoteUser } from '@verdaccio/types';\n\nexport interface AESPayload {\n user: string;\n password: string;\n}\n\nexport type BasicPayload = AESPayload | void;\nexport type AuthMiddlewarePayload = RemoteUser | BasicPayload;\n\nexport interface AuthTokenHeader {\n scheme: string;\n token: string;\n}\nexport type AllowActionCallbackResponse = boolean | undefined;\nexport type AllowActionCallback = (\n error: VerdaccioError | null,\n allowed?: AllowActionCallbackResponse\n) => void;\n\nexport type AllowAction = (\n user: RemoteUser,\n pkg: AuthPackageAllow,\n callback: AllowActionCallback\n) => void;\n\nexport interface TokenEncryption {\n jwtEncrypt(user: RemoteUser, signOptions: JWTSignOptions): Promise<string>;\n aesEncrypt(buf: string): string | void;\n}\n\nexport type ActionsAllowed = 'publish' | 'unpublish' | 'access';\n\n// remove\nexport interface IAuthMiddleware {\n apiJWTmiddleware(): $NextFunctionVer;\n webUIJWTmiddleware(): $NextFunctionVer;\n}\n\nexport type $RequestExtend = Request & { remote_user?: any; log: Logger };\nexport type $ResponseExtend = Response & { cookies?: any };\nexport type $NextFunctionVer = NextFunction & any;\nexport { NextFunction };\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { NextFunction, Request, Response } from 'express';\n\nimport type { VerdaccioError } from '@verdaccio/core';\nimport type { AuthPackageAllow, JWTSignOptions, Logger, RemoteUser } from '@verdaccio/types';\n\nexport interface AESPayload {\n user: string;\n password: string;\n tokenKey?: string;\n}\n\nexport type BasicPayload = AESPayload | void;\nexport type AuthMiddlewarePayload = RemoteUser | BasicPayload;\n\nexport interface AuthTokenHeader {\n scheme: string;\n token: string;\n}\nexport type AllowActionCallbackResponse = boolean | undefined;\nexport type AllowActionCallback = (\n error: VerdaccioError | null,\n allowed?: AllowActionCallbackResponse\n) => void;\n\nexport type AllowAction = (\n user: RemoteUser,\n pkg: AuthPackageAllow,\n callback: AllowActionCallback\n) => void;\n\nexport interface TokenEncryption {\n jwtEncrypt(user: RemoteUser, signOptions: JWTSignOptions): Promise<string>;\n aesEncrypt(buf: string): string | void;\n}\n\nexport type ActionsAllowed = 'publish' | 'unpublish' | 'access';\n\n// remove\nexport interface IAuthMiddleware {\n apiJWTmiddleware(): $NextFunctionVer;\n webUIJWTmiddleware(): $NextFunctionVer;\n}\n\nexport type $RequestExtend = Request & { remote_user?: any; log: Logger };\nexport type $ResponseExtend = Response & { cookies?: any };\nexport type $NextFunctionVer = NextFunction & any;\nexport { NextFunction };\n"],"mappings":"","ignoreList":[]}
package/build/utils.d.ts CHANGED
@@ -10,7 +10,9 @@ export declare function parseAuthTokenHeader(authorizationHeader: string): AuthT
10
10
  export declare function parseAESCredentials(authorizationHeader: string, secret: string): string | void;
11
11
  export declare function getMiddlewareCredentials(security: Security, secretKey: string, authorizationHeader: string): AuthMiddlewarePayload;
12
12
  export declare function isAESLegacy(security: Security): boolean;
13
- export declare function getApiToken(auth: TokenEncryption, config: Config, remoteUser: RemoteUser, aesPassword: string): Promise<string | void>;
13
+ export declare function getApiToken(auth: TokenEncryption, config: Config, remoteUser: RemoteUser, aesPassword: string, options?: {
14
+ tokenKey?: string;
15
+ }): Promise<string | void>;
14
16
  export declare const expireReasons: string[];
15
17
  export declare function verifyJWTPayload(token: string, secret: string, security: Security): RemoteUser;
16
18
  export declare function isAuthHeaderValid(authorization: string): boolean;
@@ -25,5 +27,5 @@ export declare function allow_action(action: ActionsAllowed, logger: Logger): Al
25
27
  *
26
28
  */
27
29
  export declare function handleSpecialUnpublish(logger: Logger): any;
28
- export declare function buildUser(name: string, password: string): string;
30
+ export declare function buildUser(name: string, password: string, tokenKey?: string): string;
29
31
  export declare function convertPayloadToBase64(payload: string): Buffer;
package/build/utils.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -24,6 +25,11 @@ var _signature = require("@verdaccio/signature");
24
25
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
25
26
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
26
27
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
28
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
29
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
30
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
31
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
32
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
27
33
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
28
34
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
29
35
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
@@ -110,12 +116,22 @@ function getApiToken(_x, _x2, _x3, _x4) {
110
116
  }
111
117
  function _getApiToken() {
112
118
  _getApiToken = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(auth, config, remoteUser, aesPassword) {
113
- var security, jwt;
119
+ var options,
120
+ security,
121
+ tokenUser,
122
+ jwt,
123
+ _args = arguments;
114
124
  return _regenerator().w(function (_context) {
115
125
  while (1) switch (_context.n) {
116
126
  case 0:
127
+ options = _args.length > 4 && _args[4] !== undefined ? _args[4] : {};
117
128
  debug('get api token');
118
129
  security = config.security;
130
+ tokenUser = options.tokenKey ? _objectSpread(_objectSpread({}, remoteUser), {}, {
131
+ token: {
132
+ key: options.tokenKey
133
+ }
134
+ }) : remoteUser;
119
135
  if (!isAESLegacy(security)) {
120
136
  _context.n = 2;
121
137
  break;
@@ -124,7 +140,7 @@ function _getApiToken() {
124
140
  // fallback all goes to AES encryption
125
141
  _context.n = 1;
126
142
  return new Promise(function (resolve) {
127
- resolve(auth.aesEncrypt(buildUser(remoteUser.name, aesPassword)));
143
+ resolve(auth.aesEncrypt(buildUser(remoteUser.name, aesPassword, options.tokenKey)));
128
144
  });
129
145
  case 1:
130
146
  return _context.a(2, _context.v);
@@ -135,13 +151,13 @@ function _getApiToken() {
135
151
  break;
136
152
  }
137
153
  _context.n = 3;
138
- return auth.jwtEncrypt(remoteUser, jwt.sign);
154
+ return auth.jwtEncrypt(tokenUser, jwt.sign);
139
155
  case 3:
140
156
  return _context.a(2, _context.v);
141
157
  case 4:
142
158
  _context.n = 5;
143
159
  return new Promise(function (resolve) {
144
- resolve(auth.aesEncrypt(buildUser(remoteUser.name, aesPassword)));
160
+ resolve(auth.aesEncrypt(buildUser(remoteUser.name, aesPassword, options.tokenKey)));
145
161
  });
146
162
  case 5:
147
163
  return _context.a(2, _context.v);
@@ -256,7 +272,14 @@ function handleSpecialUnpublish(logger) {
256
272
  return allow_action(action, logger)(user, pkg, callback);
257
273
  };
258
274
  }
259
- function buildUser(name, password) {
275
+ function buildUser(name, password, tokenKey) {
276
+ if (tokenKey) {
277
+ return JSON.stringify({
278
+ user: name,
279
+ password: password,
280
+ tokenKey: tokenKey
281
+ });
282
+ }
260
283
  return String("".concat(name, ":").concat(password));
261
284
  }
262
285
  function convertPayloadToBase64(payload) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_debug","_interopRequireDefault","require","_lodash","_config","_core","_signature","e","__esModule","_regenerator","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","next","push","isArray","debug","buildDebug","parseAuthTokenHeader","authorizationHeader","parts","split","_parts","scheme","token","parseAESCredentials","secret","_parseAuthTokenHeader","toUpperCase","TOKEN_BASIC","credentials","convertPayloadToBase64","TOKEN_BEARER","isLegacyUnsecure","aesDecryptDeprecated","aesDecrypt","getMiddlewareCredentials","security","secretKey","isAESLegacy","parsedCredentials","parseBasicPayload","_parseAuthTokenHeader2","_","isString","verifyJWTPayload","_security$api","api","legacy","jwt","isNil","getApiToken","_x","_x2","_x3","_x4","_getApiToken","_callee","auth","config","remoteUser","aesPassword","_context","aesEncrypt","buildUser","sign","jwtEncrypt","expireReasons","exports","_security$api2","payload","verifyPayload","verify","error","includes","createAnonymousRemoteUser","errorUtils","getCode","HTTP_STATUS","UNAUTHORIZED","message","isAuthHeaderValid","authorization","getDefaultPluginMethods","logger","authenticate","_user","_password","cb","getForbidden","API_ERROR","BAD_USERNAME_PASSWORD","adduser","allow_access","allow_action","allow_publish","allow_unpublish","handleSpecialUnpublish","action","allowActionCallback","user","pkg","callback","trace","remote","groups","groupAccess","hasPermission","some","group","pkgName","concat","getUnauthorized","isUnpublishMissing","hasGroups","undefined","password","String","Buffer"],"sources":["../src/utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { createAnonymousRemoteUser } from '@verdaccio/config';\nimport type { pluginUtils } from '@verdaccio/core';\nimport { API_ERROR, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER, errorUtils } from '@verdaccio/core';\nimport {\n aesDecrypt,\n aesDecryptDeprecated,\n parseBasicPayload,\n verifyPayload,\n} from '@verdaccio/signature';\nimport type { AuthPackageAllow, Config, Logger, RemoteUser, Security } from '@verdaccio/types';\n\nimport type {\n ActionsAllowed,\n AllowAction,\n AllowActionCallback,\n AuthMiddlewarePayload,\n AuthTokenHeader,\n TokenEncryption,\n} from './types';\n\nconst debug = buildDebug('verdaccio:auth:utils');\n\n/**\n * Split authentication header eg: Bearer [secret_token]\n * @param authorizationHeader auth token\n */\nexport function parseAuthTokenHeader(authorizationHeader: string): AuthTokenHeader {\n const parts = authorizationHeader.split(' ');\n const [scheme, token] = parts;\n\n return { scheme, token };\n}\n\nexport function parseAESCredentials(authorizationHeader: string, secret: string) {\n debug('parseAESCredentials init');\n const { scheme, token } = parseAuthTokenHeader(authorizationHeader);\n\n // basic is deprecated and should not be enforced\n // basic is currently being used for functional test\n if (scheme.toUpperCase() === TOKEN_BASIC.toUpperCase()) {\n debug('legacy header basic');\n const credentials = convertPayloadToBase64(token).toString();\n\n return credentials;\n } else if (scheme.toUpperCase() === TOKEN_BEARER.toUpperCase()) {\n debug('legacy header bearer');\n debug('secret length %o', secret.length);\n const isLegacyUnsecure = secret.length > 32;\n debug('is legacy unsecure %o', isLegacyUnsecure);\n if (isLegacyUnsecure) {\n debug('legacy unsecure enabled');\n return aesDecryptDeprecated(convertPayloadToBase64(token), secret).toString('utf-8');\n } else {\n debug('legacy secure enabled');\n return aesDecrypt(token.toString(), secret);\n }\n }\n}\n\nexport function getMiddlewareCredentials(\n security: Security,\n secretKey: string,\n authorizationHeader: string\n): AuthMiddlewarePayload {\n debug('getMiddlewareCredentials init');\n // comment out for debugging purposes\n if (isAESLegacy(security)) {\n debug('is legacy');\n const credentials = parseAESCredentials(authorizationHeader, secretKey);\n if (!credentials) {\n debug('parse legacy credentials failed');\n return;\n }\n\n const parsedCredentials = parseBasicPayload(credentials);\n if (!parsedCredentials) {\n debug('parse legacy basic payload credentials failed');\n return;\n }\n\n return parsedCredentials;\n }\n const { scheme, token } = parseAuthTokenHeader(authorizationHeader);\n\n debug('is jwt');\n if (_.isString(token) && scheme.toUpperCase() === TOKEN_BEARER.toUpperCase()) {\n return verifyJWTPayload(token, secretKey, security);\n }\n}\n\nexport function isAESLegacy(security: Security): boolean {\n const { legacy, jwt } = security.api;\n\n return _.isNil(legacy) === false && _.isNil(jwt) && legacy === true;\n}\n\nexport async function getApiToken(\n auth: TokenEncryption,\n config: Config,\n remoteUser: RemoteUser,\n aesPassword: string\n): Promise<string | void> {\n debug('get api token');\n const { security } = config;\n\n if (isAESLegacy(security)) {\n debug('security legacy enabled');\n // fallback all goes to AES encryption\n return await new Promise((resolve): void => {\n resolve(auth.aesEncrypt(buildUser(remoteUser.name as string, aesPassword)));\n });\n }\n const { jwt } = security.api;\n\n if (jwt?.sign) {\n return await auth.jwtEncrypt(remoteUser, jwt.sign);\n }\n return await new Promise((resolve): void => {\n resolve(auth.aesEncrypt(buildUser(remoteUser.name as string, aesPassword)));\n });\n}\n\nexport const expireReasons: string[] = ['JsonWebTokenError', 'TokenExpiredError'];\n\nexport function verifyJWTPayload(token: string, secret: string, security: Security): RemoteUser {\n try {\n const payload: RemoteUser = verifyPayload(token, secret, security?.api?.jwt?.verify);\n\n return payload;\n } catch (error: any) {\n // #168 this check should be removed as soon AES encrypt is removed.\n if (expireReasons.includes(error.name)) {\n // it might be possible the jwt configuration is enabled and\n // old tokens fails still remains in usage, thus\n // we return an anonymous user to force log in.\n return createAnonymousRemoteUser();\n }\n throw errorUtils.getCode(HTTP_STATUS.UNAUTHORIZED, error.message);\n }\n}\n\nexport function isAuthHeaderValid(authorization: string): boolean {\n return authorization.split(' ').length === 2;\n}\n\n/**\n * Return a default configuration for authentication if none is provided.\n * @param logger {Logger}\n * @returns object of default implementations.\n */\nexport function getDefaultPluginMethods(logger: Logger): pluginUtils.Auth<Config> {\n return {\n authenticate(_user: string, _password: string, cb: pluginUtils.AuthCallback): void {\n debug('triggered default authenticate method');\n cb(errorUtils.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD));\n },\n\n adduser(_user: string, _password: string, cb: pluginUtils.AuthUserCallback): void {\n debug('triggered default adduser method');\n // since adduser is not implemented but optional, continue without error\n // this assumes that the user is added by an external system\n cb(null, true);\n },\n\n // @ts-ignore\n allow_access: allow_action('access', logger),\n // @ts-ignore\n allow_publish: allow_action('publish', logger),\n allow_unpublish: handleSpecialUnpublish(logger),\n };\n}\n\nexport function allow_action(action: ActionsAllowed, logger: Logger): AllowAction {\n return function allowActionCallback(\n user: RemoteUser,\n pkg: AuthPackageAllow,\n callback: AllowActionCallback\n ): void {\n logger.trace({ remote: user.name }, `[auth/allow_action]: user: @{remote}`);\n const { name, groups } = user;\n debug('allow_action \"%s\": groups %s', action, groups);\n const groupAccess = pkg[action] as string[];\n debug('allow_action \"%s\": groupAccess %s', action, groupAccess);\n const hasPermission = groupAccess.some((group) => {\n return name === group || groups.includes(group);\n });\n debug('package \"%s\" has permission \"%s\"', name, hasPermission);\n logger.trace(\n { pkgName: pkg.name, hasPermission, remote: user.name, groupAccess },\n `[auth/allow_action]: hasPermission? @{hasPermission} for user: @{remote}, package: @{pkgName}`\n );\n\n if (hasPermission) {\n logger.trace({ remote: user.name }, `auth/allow_action: access granted to: @{remote}`);\n return callback(null, true);\n }\n\n if (name) {\n callback(\n errorUtils.getForbidden(`user ${name} is not allowed to ${action} package ${pkg.name}`)\n );\n } else {\n callback(\n errorUtils.getUnauthorized(`authorization required to ${action} package ${pkg.name}`)\n );\n }\n };\n}\n\n/**\n *\n */\nexport function handleSpecialUnpublish(logger: Logger): any {\n return function (user: RemoteUser, pkg: AuthPackageAllow, callback: AllowActionCallback): void {\n const action = 'unpublish';\n // verify whether the unpublish prop has been defined\n const isUnpublishMissing: boolean = !pkg[action];\n debug('is unpublish method missing ? %s', isUnpublishMissing);\n const hasGroups: boolean = isUnpublishMissing ? false : (pkg[action] as string[]).length > 0;\n logger.trace(\n { user: user.name, name: pkg.name, hasGroups },\n `fallback unpublish for @{name} has groups: @{hasGroups} for @{user}`\n );\n\n if (isUnpublishMissing || hasGroups === false) {\n return callback(null, undefined);\n }\n\n logger.trace(\n { user: user.name, name: pkg.name, action, hasGroups },\n `allow_action for @{action} for @{name} has groups: @{hasGroups} for @{user}`\n );\n return allow_action(action, logger)(user, pkg, callback);\n };\n}\n\nexport function buildUser(name: string, password: string): string {\n return String(`${name}:${password}`);\n}\n\nexport function convertPayloadToBase64(payload: string): Buffer {\n return Buffer.from(payload, 'base64');\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_debug","_interopRequireDefault","require","_lodash","_config","_core","_signature","e","__esModule","_regenerator","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_toPrimitive","_typeof","toPrimitive","String","Number","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","next","isArray","debug","buildDebug","parseAuthTokenHeader","authorizationHeader","parts","split","_parts","scheme","token","parseAESCredentials","secret","_parseAuthTokenHeader","toUpperCase","TOKEN_BASIC","credentials","convertPayloadToBase64","TOKEN_BEARER","isLegacyUnsecure","aesDecryptDeprecated","aesDecrypt","getMiddlewareCredentials","security","secretKey","isAESLegacy","parsedCredentials","parseBasicPayload","_parseAuthTokenHeader2","_","isString","verifyJWTPayload","_security$api","api","legacy","jwt","isNil","getApiToken","_x","_x2","_x3","_x4","_getApiToken","_callee","auth","config","remoteUser","aesPassword","options","tokenUser","_args","_context","undefined","tokenKey","key","aesEncrypt","buildUser","sign","jwtEncrypt","expireReasons","exports","_security$api2","payload","verifyPayload","verify","error","includes","createAnonymousRemoteUser","errorUtils","getCode","HTTP_STATUS","UNAUTHORIZED","message","isAuthHeaderValid","authorization","getDefaultPluginMethods","logger","authenticate","_user","_password","cb","getForbidden","API_ERROR","BAD_USERNAME_PASSWORD","adduser","allow_access","allow_action","allow_publish","allow_unpublish","handleSpecialUnpublish","action","allowActionCallback","user","pkg","callback","trace","remote","groups","groupAccess","hasPermission","some","group","pkgName","concat","getUnauthorized","isUnpublishMissing","hasGroups","password","JSON","stringify","Buffer"],"sources":["../src/utils.ts"],"sourcesContent":["import buildDebug from 'debug';\nimport _ from 'lodash';\n\nimport { createAnonymousRemoteUser } from '@verdaccio/config';\nimport type { pluginUtils } from '@verdaccio/core';\nimport { API_ERROR, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER, errorUtils } from '@verdaccio/core';\nimport {\n aesDecrypt,\n aesDecryptDeprecated,\n parseBasicPayload,\n verifyPayload,\n} from '@verdaccio/signature';\nimport type { AuthPackageAllow, Config, Logger, RemoteUser, Security } from '@verdaccio/types';\n\nimport type {\n ActionsAllowed,\n AllowAction,\n AllowActionCallback,\n AuthMiddlewarePayload,\n AuthTokenHeader,\n TokenEncryption,\n} from './types';\n\nconst debug = buildDebug('verdaccio:auth:utils');\n\n/**\n * Split authentication header eg: Bearer [secret_token]\n * @param authorizationHeader auth token\n */\nexport function parseAuthTokenHeader(authorizationHeader: string): AuthTokenHeader {\n const parts = authorizationHeader.split(' ');\n const [scheme, token] = parts;\n\n return { scheme, token };\n}\n\nexport function parseAESCredentials(authorizationHeader: string, secret: string) {\n debug('parseAESCredentials init');\n const { scheme, token } = parseAuthTokenHeader(authorizationHeader);\n\n // basic is deprecated and should not be enforced\n // basic is currently being used for functional test\n if (scheme.toUpperCase() === TOKEN_BASIC.toUpperCase()) {\n debug('legacy header basic');\n const credentials = convertPayloadToBase64(token).toString();\n\n return credentials;\n } else if (scheme.toUpperCase() === TOKEN_BEARER.toUpperCase()) {\n debug('legacy header bearer');\n debug('secret length %o', secret.length);\n const isLegacyUnsecure = secret.length > 32;\n debug('is legacy unsecure %o', isLegacyUnsecure);\n if (isLegacyUnsecure) {\n debug('legacy unsecure enabled');\n return aesDecryptDeprecated(convertPayloadToBase64(token), secret).toString('utf-8');\n } else {\n debug('legacy secure enabled');\n return aesDecrypt(token.toString(), secret);\n }\n }\n}\n\nexport function getMiddlewareCredentials(\n security: Security,\n secretKey: string,\n authorizationHeader: string\n): AuthMiddlewarePayload {\n debug('getMiddlewareCredentials init');\n // comment out for debugging purposes\n if (isAESLegacy(security)) {\n debug('is legacy');\n const credentials = parseAESCredentials(authorizationHeader, secretKey);\n if (!credentials) {\n debug('parse legacy credentials failed');\n return;\n }\n\n const parsedCredentials = parseBasicPayload(credentials);\n if (!parsedCredentials) {\n debug('parse legacy basic payload credentials failed');\n return;\n }\n\n return parsedCredentials;\n }\n const { scheme, token } = parseAuthTokenHeader(authorizationHeader);\n\n debug('is jwt');\n if (_.isString(token) && scheme.toUpperCase() === TOKEN_BEARER.toUpperCase()) {\n return verifyJWTPayload(token, secretKey, security);\n }\n}\n\nexport function isAESLegacy(security: Security): boolean {\n const { legacy, jwt } = security.api;\n\n return _.isNil(legacy) === false && _.isNil(jwt) && legacy === true;\n}\n\nexport async function getApiToken(\n auth: TokenEncryption,\n config: Config,\n remoteUser: RemoteUser,\n aesPassword: string,\n options: { tokenKey?: string } = {}\n): Promise<string | void> {\n debug('get api token');\n const { security } = config;\n const tokenUser: RemoteUser = options.tokenKey\n ? { ...remoteUser, token: { key: options.tokenKey } }\n : remoteUser;\n\n if (isAESLegacy(security)) {\n debug('security legacy enabled');\n // fallback all goes to AES encryption\n return await new Promise((resolve): void => {\n resolve(auth.aesEncrypt(buildUser(remoteUser.name as string, aesPassword, options.tokenKey)));\n });\n }\n const { jwt } = security.api;\n\n if (jwt?.sign) {\n return await auth.jwtEncrypt(tokenUser, jwt.sign);\n }\n return await new Promise((resolve): void => {\n resolve(auth.aesEncrypt(buildUser(remoteUser.name as string, aesPassword, options.tokenKey)));\n });\n}\n\nexport const expireReasons: string[] = ['JsonWebTokenError', 'TokenExpiredError'];\n\nexport function verifyJWTPayload(token: string, secret: string, security: Security): RemoteUser {\n try {\n const payload: RemoteUser = verifyPayload(token, secret, security?.api?.jwt?.verify);\n\n return payload;\n } catch (error: any) {\n // #168 this check should be removed as soon AES encrypt is removed.\n if (expireReasons.includes(error.name)) {\n // it might be possible the jwt configuration is enabled and\n // old tokens fails still remains in usage, thus\n // we return an anonymous user to force log in.\n return createAnonymousRemoteUser();\n }\n throw errorUtils.getCode(HTTP_STATUS.UNAUTHORIZED, error.message);\n }\n}\n\nexport function isAuthHeaderValid(authorization: string): boolean {\n return authorization.split(' ').length === 2;\n}\n\n/**\n * Return a default configuration for authentication if none is provided.\n * @param logger {Logger}\n * @returns object of default implementations.\n */\nexport function getDefaultPluginMethods(logger: Logger): pluginUtils.Auth<Config> {\n return {\n authenticate(_user: string, _password: string, cb: pluginUtils.AuthCallback): void {\n debug('triggered default authenticate method');\n cb(errorUtils.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD));\n },\n\n adduser(_user: string, _password: string, cb: pluginUtils.AuthUserCallback): void {\n debug('triggered default adduser method');\n // since adduser is not implemented but optional, continue without error\n // this assumes that the user is added by an external system\n cb(null, true);\n },\n\n // @ts-ignore\n allow_access: allow_action('access', logger),\n // @ts-ignore\n allow_publish: allow_action('publish', logger),\n allow_unpublish: handleSpecialUnpublish(logger),\n };\n}\n\nexport function allow_action(action: ActionsAllowed, logger: Logger): AllowAction {\n return function allowActionCallback(\n user: RemoteUser,\n pkg: AuthPackageAllow,\n callback: AllowActionCallback\n ): void {\n logger.trace({ remote: user.name }, `[auth/allow_action]: user: @{remote}`);\n const { name, groups } = user;\n debug('allow_action \"%s\": groups %s', action, groups);\n const groupAccess = pkg[action] as string[];\n debug('allow_action \"%s\": groupAccess %s', action, groupAccess);\n const hasPermission = groupAccess.some((group) => {\n return name === group || groups.includes(group);\n });\n debug('package \"%s\" has permission \"%s\"', name, hasPermission);\n logger.trace(\n { pkgName: pkg.name, hasPermission, remote: user.name, groupAccess },\n `[auth/allow_action]: hasPermission? @{hasPermission} for user: @{remote}, package: @{pkgName}`\n );\n\n if (hasPermission) {\n logger.trace({ remote: user.name }, `auth/allow_action: access granted to: @{remote}`);\n return callback(null, true);\n }\n\n if (name) {\n callback(\n errorUtils.getForbidden(`user ${name} is not allowed to ${action} package ${pkg.name}`)\n );\n } else {\n callback(\n errorUtils.getUnauthorized(`authorization required to ${action} package ${pkg.name}`)\n );\n }\n };\n}\n\n/**\n *\n */\nexport function handleSpecialUnpublish(logger: Logger): any {\n return function (user: RemoteUser, pkg: AuthPackageAllow, callback: AllowActionCallback): void {\n const action = 'unpublish';\n // verify whether the unpublish prop has been defined\n const isUnpublishMissing: boolean = !pkg[action];\n debug('is unpublish method missing ? %s', isUnpublishMissing);\n const hasGroups: boolean = isUnpublishMissing ? false : (pkg[action] as string[]).length > 0;\n logger.trace(\n { user: user.name, name: pkg.name, hasGroups },\n `fallback unpublish for @{name} has groups: @{hasGroups} for @{user}`\n );\n\n if (isUnpublishMissing || hasGroups === false) {\n return callback(null, undefined);\n }\n\n logger.trace(\n { user: user.name, name: pkg.name, action, hasGroups },\n `allow_action for @{action} for @{name} has groups: @{hasGroups} for @{user}`\n );\n return allow_action(action, logger)(user, pkg, callback);\n };\n}\n\nexport function buildUser(name: string, password: string, tokenKey?: string): string {\n if (tokenKey) {\n return JSON.stringify({ user: name, password, tokenKey });\n }\n\n return String(`${name}:${password}`);\n}\n\nexport function convertPayloadToBase64(payload: string): Buffer {\n return Buffer.from(payload, 'base64');\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/auth",
3
- "version": "8.0.1",
3
+ "version": "8.0.3",
4
4
  "description": "Verdaccio Authentication",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -33,18 +33,18 @@
33
33
  },
34
34
  "license": "MIT",
35
35
  "dependencies": {
36
- "@verdaccio/config": "8.1.0",
37
- "@verdaccio/core": "8.1.0",
38
- "@verdaccio/loaders": "8.0.1",
39
- "@verdaccio/signature": "8.0.1",
36
+ "@verdaccio/config": "8.1.2",
37
+ "@verdaccio/core": "8.1.2",
38
+ "@verdaccio/loaders": "8.0.3",
39
+ "@verdaccio/signature": "8.0.3",
40
40
  "debug": "4.4.3",
41
41
  "lodash": "4.18.1",
42
- "verdaccio-htpasswd": "13.0.1"
42
+ "verdaccio-htpasswd": "13.0.3"
43
43
  },
44
44
  "devDependencies": {
45
- "@verdaccio/middleware": "8.0.1",
46
- "@verdaccio/types": "13.0.0",
47
- "@verdaccio/logger": "8.0.1",
45
+ "@verdaccio/middleware": "8.0.3",
46
+ "@verdaccio/types": "13.0.2",
47
+ "@verdaccio/logger": "8.0.3",
48
48
  "express": "4.22.1",
49
49
  "supertest": "7.1.4",
50
50
  "vitest": "4.1.2"