节点中的kerberos身份验证

时间:2014-08-27 04:51:27

标签: node.js authentication authorization kerberos

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

我的设置很基本:

  1. 客户端应用程序为节点服务器应用程序提供用户名/密码
  2. 节点使用提供的凭据针对Kerberos
  3. 对用户进行身份验证
  4. Kerberos提供节点应用将发送给客户端的Auth令牌
  5. 客户端将带有每个请求的令牌发送到节点,以避免节点中的状态管理。
  6. 节点应用程序需要知道用户在故障单中的角色。
  7. 对于步骤#3& #5,我正在寻找帮助来检索kerberos令牌并阅读其内容以提取角色信息。

    非常感谢任何帮助。

    我检查了一个早期的帖子但是没有回答: Kerberos Authorization w/ Node.js

    感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

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