Authentification Kerberos dans Node.js https.get ou https.request
Je suis en train d'écrire un script simple qui demande des données à partir d'un outil sur un réseau interne. Voici le code:
#!/usr/bin/node
var https = require('https');
var fs = require('fs');
var options = {
host: '<link>',
port: 443,
path: '<path>',
auth: 'username:password',
ca: [fs.readFileSync('../.cert/newca.crt')]
};
https.get(options, function(res) {
console.log("Got response: " + res.statusCode);
res.on('data', function (d) {
console.log('BODY: ' + d);
});
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
Maintenant la question est, comment puis-je utiliser un ticket Kerberos pour authentifier plutôt que de fournir mes informations d'identification dans auth:
en texte brut?
source d'informationauteur mart1n
Vous devez vous connecter pour publier un commentaire.
Paul Scheltema réponse, vous avez besoin pour obtenir ticketdata de la profondeur de système d'exploitation. Vous (ou un module de nom) doivent utiliser de GSS-API avoir ticketdata généré par Active Directory pour vous.
Un tel mécanisme est présent dans Chrome, mais il semble qu'il n'est pas inclus dans Node.js (seul le moteur javascript de Chrome), de sorte que vous pouvez avoir besoin d'ajouter un module, par exemple:
Pour installer/compiler le module, vous devez disposer de Visual Studio.
Pour configurer l'environnement, de l'
- Sur tous les ordinateurs que vous devez avoir tcp et udp activé sur les ports 88 (Kerberos) et 53 (dns).
- Sur Windows Server Active Directory doit être en cours d'exécution (ldap, dns, kdc)
- Sur la page https://www.npmjs.org/package/passport-kerberos ils utilisent le terme de ROYAUME. C'est un nom de domaine, écrit en majuscules.
de http://docs.oracle.com/cd/E24191_01/common/tutorials/authn_kerberos_service.html
ainsi, au lieu de votre nom d'utilisateur:mot de passe vous fournir le billet
sinon, vous pouvez comme indiqué ci-dessous que les informations de le mettre dans le corps du message ou un message d'attribut
EDIT:
le "" la partie a été mon exemple où l'utilisation du titre de transport, le mettre dans un multiytype corps et l'envoyer, vous pouvez également utiliser l'-tête WWW-Authenticate envoyer
par exemple. ajouter les options sur https.demande
google a certains diagrammes de nice sur la façon dont il fonctionne:
https://developers.google.com/search-appliance/kb/secure/kerberos-diagram
J'ai obtenu ce travail à l'aide de "kerberos" module, version 0.0.12. J'ai créé un Gist avec le travail exemple:
https://gist.github.com/dmansfield/c75817dcacc2393da0a7
Fondamentalement, vous utilisez trois méthodes pour obtenir le formulaire "Autorisation" données d'en-tête:
Ensuite, vous créez une "Autorisation" de l'en-tête (PAS de WWW-Authenticate comme indiqué ci-dessus, qui est ce que le serveur envoie à l'arrière) et cela devrait fonctionner.
Noter également: en général, les navigateurs web demande une ressource, obtenir un 401 de retour avec un WWW-Authenticate: Négocier la tête dans la réponse, puis re-demande de la ressource avec le billet données fournies dans le formulaire "Autorisation" de l'en-tête. Cette danse à deux temps qui se passe pour chaque ressource. Je ne suis pas sûr si cela signifie quelque chose ou non.