sso
This commit is contained in:
parent
029fe23657
commit
1876580d86
911 changed files with 160008 additions and 2 deletions
86
node_modules/passport-saml/lib/node-saml/inmemory-cache-provider.js
generated
vendored
Normal file
86
node_modules/passport-saml/lib/node-saml/inmemory-cache-provider.js
generated
vendored
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
"use strict";
|
||||
/**
|
||||
* Simple in memory cache provider. To be used to store state of requests that needs
|
||||
* to be validated/checked when a response is received.
|
||||
*
|
||||
* This is the default implementation of a cache provider used by Passport-SAML. For
|
||||
* multiple server instances/load balanced scenarios (I.e. the SAML request could have
|
||||
* been generated from a different server/process handling the SAML response) this
|
||||
* implementation will NOT be sufficient.
|
||||
*
|
||||
* The caller should provide their own implementation for a cache provider as defined
|
||||
* in the config options for Passport-SAML.
|
||||
* @param options
|
||||
* @constructor
|
||||
*/
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.CacheProvider = void 0;
|
||||
class CacheProvider {
|
||||
constructor(options) {
|
||||
var _a;
|
||||
this.cacheKeys = {};
|
||||
this.options = {
|
||||
...options,
|
||||
keyExpirationPeriodMs: (_a = options === null || options === void 0 ? void 0 : options.keyExpirationPeriodMs) !== null && _a !== void 0 ? _a : 28800000,
|
||||
};
|
||||
// Expire old cache keys
|
||||
const expirationTimer = setInterval(() => {
|
||||
const nowMs = new Date().getTime();
|
||||
const keys = Object.keys(this.cacheKeys);
|
||||
keys.forEach((key) => {
|
||||
if (nowMs >=
|
||||
new Date(this.cacheKeys[key].createdAt).getTime() + this.options.keyExpirationPeriodMs) {
|
||||
this.removeAsync(key);
|
||||
}
|
||||
});
|
||||
}, this.options.keyExpirationPeriodMs);
|
||||
// we only want this to run if the process is still open; it shouldn't hold the process open (issue #68)
|
||||
expirationTimer.unref();
|
||||
}
|
||||
/**
|
||||
* Store an item in the cache, using the specified key and value.
|
||||
* Internally will keep track of the time the item was added to the cache
|
||||
* @param id
|
||||
* @param value
|
||||
*/
|
||||
async saveAsync(key, value) {
|
||||
if (!this.cacheKeys[key]) {
|
||||
this.cacheKeys[key] = {
|
||||
createdAt: new Date().getTime(),
|
||||
value: value,
|
||||
};
|
||||
return this.cacheKeys[key];
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Returns the value of the specified key in the cache
|
||||
* @param id
|
||||
* @returns {boolean}
|
||||
*/
|
||||
async getAsync(key) {
|
||||
if (this.cacheKeys[key]) {
|
||||
return this.cacheKeys[key].value;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Removes an item from the cache if it exists
|
||||
* @param key
|
||||
*/
|
||||
async removeAsync(key) {
|
||||
if (this.cacheKeys[key]) {
|
||||
delete this.cacheKeys[key];
|
||||
return key;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.CacheProvider = CacheProvider;
|
||||
//# sourceMappingURL=inmemory-cache-provider.js.map
|
||||
Loading…
Add table
Add a link
Reference in a new issue