hades-krb5
Version:
Kerberos library for Node.js forked to fix some C++ issues
64 lines (54 loc) • 1.49 kB
JavaScript
#!/usr/bin/env node
var util = require('util');
var krb5 = require('../lib');
var yargs = require('yargs');
var exec = require('child_process').exec;
/*
Example:
./samples/kinit_kdestroy.js \
-p hdfs@HADOOP.RYBA \
-w hdfs123
*/
var argv = yargs
.usage('Usage: $0 -p [principal] -w [password] -n [fqdn]')
.demand(['principal', 'password'])
.alias('p', 'principal')
.describe('p', 'Kerberos Principal')
.alias('w', 'password')
.describe('w', 'Kerberos Password')
.alias('n', 'fqdn')
.describe('n', 'FQDN of desired service host')
.argv;
var k = krb5({
principal: argv.principal,
password: argv.password,
service_fqdn: argv.fqdn
});
var do_klist = function(callback){
process.stderr.write('----------------------- klist:\n\n');
exec('klist', function(err, stdout, stderr){
if(err){
return process.stderr.write('ERROR: ' + err.message + '\n');
}
process.stderr.write(stdout + '\n');
if(typeof(callback)=='function') return callback();
});
};
var do_kinit = function(){
process.stderr.write('------------------- kinitSync:\n\n');
k.kinitSync();
};
var do_kdestroy = function(){
process.stderr.write('---------------- kdestroySync:\n\n');
k.kdestroySync();
};
var do_spnego = function(){
if(argv.fqdn){
process.stderr.write('------------------ spnegoSync:\n\n');
token = k.tokenSync();
process.stderr.write('TOKEN: ' + token + '\n\n');
}
do_kdestroy();
};
do_kinit();
do_klist(do_spnego);