【问题标题】:kerberos authentication in node节点中的kerberos身份验证
【发布时间】:2014-10-20 13:31:45
【问题描述】:

我需要我的节点服务器来验证客户端(HTTPS 请求中提供的用户名/密码)并提供用户角色以进行授权。 我试图找出如何在成功验证的情况下检索节点中的 Kerberos 令牌(使用 node-krb5 或 passport-kerberos 模块)。

我的设置非常基本:

  1. 客户端应用程序向节点服务器应用程序提供用户名/密码
  2. 节点使用提供的凭据针对 Kerberos 对用户进行身份验证
  3. Kerberos 提供了节点应用程序将发送给客户端的 Auth 令牌
  4. 客户端将令牌与每个请求一起发送到节点以避免节点中的状态管理。
  5. 节点应用需要知道票证中的用户角色。

对于第 3 步和第 5 步,我正在寻求帮助以检索 kerberos 令牌并读取其内容以提取角色信息。

非常感谢任何帮助。

我检查了一个较早的线程,但没有得到回答: Kerberos Authorization w/ Node.js

谢谢。

【问题讨论】:

  • 这样的话题在这里讨论:stackoverflow.com/questions/20098912/…
  • 我已经完成了该线程,但它没有为我的请求提供任何帮助 - 特别是访问令牌并在 node.js 中读取它。因此,我不得不发布一个新问题,特别指出我需要帮助的地方(步骤 #3 和 #5)。

标签: node.js authentication authorization kerberos


【解决方案1】:

Kerberos 是一种身份验证协议。大多数实现在 kerberos 票证中根本没有任何角色数据。微软是我所知道的一个例外,他们在 kerberos 票证的扩展中编码了一些组数据。

但是,除非您在服务器上有密钥表(MS 中的 SPN),否则您将永远无法读取票证的内容。我不知道有任何标准的 kerberos API 提供对这些数据的访问。 (它们可能存在,我只是不知道它们)。

获取用户角色数据的典型方法是使用 kerberos 身份作为搜索授权服务的密钥。最常用的一种是 LDAP。典型的应用程序会进行 LDAP 查询以获取用户属性,然后使用这些属性来做出角色决策。 (或者查看用户是否是特定组中的成员)。

最后,很难从您的描述中看出,但听起来您实际上并没有按照预期的方式使用 kerberos。按照设计使用 kerberos 的应用程序永远不需要用户名/密码组合。

【讨论】:

    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2017-03-17
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多