Added api to retreive all public keys.

This commit is contained in:
John Shaver 2017-11-17 10:02:43 -08:00
parent a7a9a16847
commit 4d7167bee9
1 changed files with 49 additions and 0 deletions

View File

@ -158,6 +158,37 @@ OAUTH3.urls.resourceOwnerPassword = function (directive, opts) {
, data: body
};
};
// Required sub can be provided in either of two formats.
// opts : {sub: (subID)}
// opts : {session: { token: sub: (subID)}}
OAUTH3.urls.publicKeys = function(directive, opts) {
if(!directive) {
throw new Error("You must supply directives and opts");
}
if(!directive.JWKs) {
//throw new Error("Provider does not support listing public keys.");
}
if(!opts || (!opts.session && !opts.sub)) {
throw new Error("You must supply options.session or a options.sub");
}
//TODO:
//TODO: get the proper directive once it's created!!
//TODO: Do we need to have sub strictly provided?
var sub = opts.sub || opts.session.token.sub
var hardCodedDir = "/api/issuer@oauth3.org/jwks/all/:sub";
var url = OAUTH3.url.resolve(directive.api, hardCodedDir)
url = url.replace(":sub", sub);
var method = opts.method || "GET";
return {
method: method
, url: url
, session: opts.session
};
};
OAUTH3.urls.grants = function (directive, opts) {
// directive = { issuer, authorization_decision }
// opts = { response_type, scopes{ granted, requested, pending, accepted } }
@ -420,6 +451,24 @@ OAUTH3.authz.scopes = function (providerUri, session, clientParams) {
};
});
};
// Get all public keys for a sub
// Required sub can be provided in either of two formats.
// opts : {sub: (subID)}
// opts : {session: { token: sub: (subID)}}
OAUTH3.authz.publicKeys = function (providerUri, opts) {
opts = opts ? opts : {};
return OAUTH3.discover(providerUri, {
client_id: providerUri
, debug: opts.debug
}).then(function(directive) {
return OAUTH3.request(OAUTH3.urls.publicKeys(directive, opts));
}).then(function(result) {
//TODO: Do we need to cache these? Right now I don't see this request happening often.
return result.data;
});
};
OAUTH3.authz.grants = function (providerUri, opts) {
return OAUTH3.discover(providerUri, {
client_id: providerUri