【问题标题】:[Error: Unspecified GSS failure. Minor code may provide more information: No key table entry found matching[错误:未指定的 GSS 故障。次要代码可能会提供更多信息:没有找到匹配的键表条目
【发布时间】:2020-03-23 21:04:45
【问题描述】:

我一直致力于使用托管在 Azure VM 上的 AD 在 NodeJS 应用程序中实现 SSO。我在我的应用程序中使用npm-kerberos。以下是我配置所有内容的方式:

  • 我已经为服务创建了一个 SPN
  • 使用该 SPN 生成了一个 keytab
  • 在我的 ubuntu 服务器 /etc/ 中复制了 keytab
  • 已安装 kerberos 客户端并相应配置 krb5.conf

在我的应用程序中,我安装了 kerberos npm:

  • principalDetails 方法返回 HTTP/enpast.com@REALM.COM 这是我想要的。
  • checkPassword 也很好用。
  • initializeServer 使用我从 principalDetails 获得的 SPN 失败。

代码如下:

const service = 'HTTP/enpast.com@REALM.COM'
kerberos.initializeServer(service, (err, data)=>{
      if (err) {
        console.log('Failed intialization---->', err);
      } else {
        console.log('Successfully initialized server', data);
      }
    });

这是我收到的错误消息:

[错误:未指定的 GSS 故障。次要代码可能提供更多信息:No key table entry found matching HTTP/enpast.com/realm.com@]

任何导致原因的线索都将受到高度赞赏。谢谢

【问题讨论】:

    标签: npm single-sign-on kerberos


    【解决方案1】:

    我遇到了类似的问题,为了解决它,我必须这样声明 service

    const service = 'HTTP@enpast.com'
    

    注意“@”字符的位置。

    【讨论】:

      【解决方案2】:

      错误日志是不言自明的。仔细检查您是否在服务器的 keytab 中有主体:klist -k path_to_keytabfile

      【讨论】:

      • 这里是输出Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 5 HTTPS/enpast.com@SCREWSSO.EASTUS.CLOUDAPP.AZURE.COM
      • 注意主体是HTTPS。但错误指定了 HTTP。
      • 在 Kerberos 中,HTTP 和 HTTPS 指定相同的服务。这不是问题。
      • 那么他应该仔细检查他的领域配置。我认为real.com 是一个占位符名称,用于掩盖真实名称。但鉴于哈里斯发布的是真实的,这似乎是不匹配的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      相关资源
      最近更新 更多