acme-dns-01-googlecloud.js/lib/auth.js

38 rader
808 B
JavaScript

'use strict';
var Keypairs = require('keypairs');
module.exports.getToken = function(serviceAccount) {
var jwt = '';
var exp = 0;
if (exp - Date.now() > 0) {
return Promise.resolve(jwt);
}
return module.exports.generateToken(serviceAccount).then(function(_jwt) {
jwt = _jwt;
exp = Math.round(Date.now()) - 15 * 60 * 60 * 1000;
return jwt;
});
};
module.exports.generateToken = function(serviceAccount) {
var sa = serviceAccount;
return Keypairs.import({ pem: sa.private_key }).then(function(key) {
return Keypairs.signJwt({
jwk: key,
iss: sa.client_email,
exp: '1h',
header: {
kid: sa.private_key_id
},
claims: {
//aud: 'ndev.clouddns.readwrite',
aud: 'https://www.googleapis.com/auth/ndev.clouddns.readwrite',
sub: sa.client_email
}
});
});
};