当前位置: 首页 > 面试题库 >

Node.js https.get或https.request中的Kerberos身份验证

王岳
2023-03-14
问题内容

我正在尝试编写一个简单的脚本,该脚本从内部网络上的工具请求一些数据。这是代码:

#!/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);
});

现在的问题是,我该如何使用Kerberos票证进行身份验证,而不是以auth:纯文本形式提供我的凭据?


问题答案:

在Paul Scheltema的答案中,您需要从操作系统的深度获取票证数据。您(或代表您的模块)必须使用GSS-API才能由Active
Directory生成票证数据。

这种机制存在于Chrome中,但似乎它并未包含在Node.js中(仅来自Chrome的javascript引擎),因此您可能需要添加一个模块,例如:

  • Passport-Kerberos:https://www.npmjs.org/package/passport-kerberos和http://passportjs.org/guide/
  • Kerberos(npm安装kerberos)
  • 在github上的Node.js的源代码中,有一个痕迹,有人为此使用了Bones模块(https://github.com/joyent/node/search?q=kerberos&ref=cmdform)。3年前,使用DES(此编码类型非常弱,已弃用多年)

要安装/编译这样的模块,您可能需要安装Visual Studio。

要设置环境,-在所有计算机上,必须在端口88(Kerberos)和53(dns)上启用tcp和udp。-在Windows
Server上必须正在运行Active
Directory(ldap,dns,kdc)-在https://www.npmjs.org/package/passport-
kerberos页面上,它们使用术语REALM。这是域名的名称, 用大写形式表示



 类似资料:
  • 我正在运行一个squid代理服务器(CentOS 5),我正试图通过我们的AD服务器(Windows server 2008)使用kerberos。 我遵循了以下说明:http://wiki.squid-cache.org/ConfigExamples/Authenticate/Kerberos 为服务器设置一个keytab,这一切都运行良好。 当我尝试从客户端PC使用代理时,会出现问题,它会立即

  • 我正在开发一个Web应用程序,它是rest客户端并使用rest服务(API)来执行任何操作。我集成了apache shiro以使用工作正常的jdbc领域执行身份验证。 现在,我正在寻找一种使用apacheDS LDAP执行身份验证的解决方案。我计划使用kerberos身份验证,但我没有找到任何有用的文章或示例来使用apache shiro实现kerberos身份验证。 我发现apache shir

  • 使用这个例子,我的连接几乎可以工作 http://blogs.nologin.es/rickyepoderi/index.php?/archives/105-oracle-driver-and-kerberos.html 我使用的是Java7,但使用另一个没有问题。有没有一种方法可以用jvm正确读取票证(参见jdk中的kinit不要创建正确的票证)

  • 是否可以使用Kerberos但不使用JAAS来验证用户/密码?

  • 15/02/06 15:17:12警告IPC.Client:连接到服务器时遇到异常:javax.security.sasl.saslexception:GSS initiate失败[由GSSException:未提供有效凭据(机制级别:找不到任何Kerberos tgt导致)]LS:本地异常失败:java.io.ioException:javax.security.sasl.saslexcepti

  • 我知道Fiddler支持Kerberos,所以我的想法是把打嗝链到Fiddler上。我首先确保我可以在Fiddler中使用篡改(使用此链接作为指南)。然后我将Fiddler设置为Burp的上游代理,但是当我在Burp中篡改一个请求时,在发出请求时仍然得到一个未经授权的401。 关于如何让Burp进行Kerberos身份验证,还有其他想法吗?