added hook to create new session with stored key
This commit is contained in:
parent
e42079d856
commit
39b8e19bae
|
@ -283,7 +283,7 @@ OAUTH3.urls.publishKey = function (directive, opts) {
|
||||||
return {
|
return {
|
||||||
method: jwkDir.method || opts.method || 'POST'
|
method: jwkDir.method || opts.method || 'POST'
|
||||||
, url: url
|
, url: url
|
||||||
, data: opts.public_key
|
, data: opts.public_key || opts.publicKey
|
||||||
, session: opts.session
|
, session: opts.session
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -605,6 +605,48 @@ OAUTH3.hooks.keyPairs = {
|
||||||
return OAUTH3.PromiseA.resolve(OAUTH3._hooks.keyPairs.clear());
|
return OAUTH3.PromiseA.resolve(OAUTH3._hooks.keyPairs.clear());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
OAUTH3.hooks.session.get = function (providerUri, id) {
|
||||||
|
OAUTH3.hooks._checkStorage('sessions', 'get');
|
||||||
|
var sessProm = OAUTH3.PromiseA.resolve(OAUTH3._hooks.sessions.get(providerUri, id));
|
||||||
|
if (providerUri !== OAUTH3.clientUri(window.location)) {
|
||||||
|
return sessProm;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sessProm.then(function (session) {
|
||||||
|
if (session && OAUTH3.jwt.freshness(session.token) === 'fresh') {
|
||||||
|
return session;
|
||||||
|
}
|
||||||
|
|
||||||
|
return OAUTH3.hooks.keyPairs.all().then(function (keyPairs) {
|
||||||
|
var pair;
|
||||||
|
if (id) {
|
||||||
|
pair = keyPairs[id];
|
||||||
|
} else if (Object.keys(keyPairs).length === 1) {
|
||||||
|
id = Object.keys(keyPairs)[0];
|
||||||
|
pair = keyPairs[id];
|
||||||
|
} else if (Object.keys(keyPairs).length > 1) {
|
||||||
|
console.error("too many users, don't know which key to use");
|
||||||
|
}
|
||||||
|
if (!pair) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var payload = {
|
||||||
|
iss: providerUri
|
||||||
|
, aud: providerUri
|
||||||
|
, azp: providerUri
|
||||||
|
, sub: pair.sub || id
|
||||||
|
, scope: ''
|
||||||
|
};
|
||||||
|
return OAUTH3.jwt.sign(payload, pair.privateKey).then(function (token) {
|
||||||
|
return OAUTH3.hooks.session.refresh(
|
||||||
|
{ provider_uri: providerUri, client_uri: providerUri || providerUri }
|
||||||
|
, { access_token: token }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
OAUTH3._defaultStorage.grants = {
|
OAUTH3._defaultStorage.grants = {
|
||||||
prefix: 'grants-'
|
prefix: 'grants-'
|
||||||
|
|
Loading…
Reference in New Issue