node.js - docker 中使用 kerberos 和 openldap 进行 SSO

标签 node.js reactjs docker kerberos openldap

我正在尝试创建一个测试环境,它将帮助我使用 kerberos 实现 SSO 身份验证(生产环境是客户,因此我无法直接访问它)。我开始在 Docker 中设置自己的环境。应用程序前端基于react并调用node.js REST API(express)

我的计划是设置

  1. 包含用户和组的 LDAP 结构
  2. 从 Node.js 后端访问 LDAP
  3. 使用 LDAP 用户名和密码进行后备验证
  4. 使用 LDAP 设置 KERBEROS
  5. 将 pc(win、mac)添加到域
  6. 使用浏览器中的票证对 kerberos 进行身份验证

我成功完成了步骤 1-3。我正在使用 OpenLdap在 docker 中运行的事件目录的镜像(可以通过域名访问,例如 ldap.example.com )。我可以管理用户和组,还可以使用管理员/技术用户从后端访问 LDAP 并检索数据。我可以使用 LDAP 用户名 (uid) 和密码对用户进行身份验证。

问题是 kerberos。我用kerberos docker 镜像,我正在尝试设置它来验证 LDAP 用户。

krb5.conf

[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = LDAP.EXAMPLE.COM

[realms]
LDAP.EXAMPLE.COM = {
   kdc = ldap.example.com
   admin_server = admin
}

另一个问题是将 PC 添加到域中。我只在 mac 上尝试过这个。我可以看到网络帐户服务器并且可以成功添加它,但是当我打开目录实用程序并尝试添加 Active Directory 域时,它失败并出现一般错误无法联系身份验证服务器

但主要问题是 LDAP 和 kerberos 镜像之间的连接,我尝试了几种配置,但仍然无法弄清楚如何在 kerberos 身份验证中使用 ldap 用户凭据。

最佳答案

我针对这些问题做了一个功能齐全的Docker测试环境,其中包括:

我建议使用dpage/pgadmin4用于 LDAP 手动配置(用户、组等)的图像。

在此架构中,LDAP 用户/密码回退是一种不好的做法。不过,您也可以通过 Passport 以这种方式建立身份验证过程,我还没有尝试过,但是 passport-ldapauth包似乎很适合这个。

关于node.js - docker 中使用 kerberos 和 openldap 进行 SSO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757381/

相关文章:

javascript - 在 ReactJS 中使用单独的方法填充渲染方法

reactjs - react 五彩纸屑 : Super expression must either be null or a function

node.js - 无法使用bluemix中的简单 Node 应用程序示例运行docker容器

postgresql - Flyway无法在Postgres Docker中找到角色

Docker:构建镜像时出现 "lstat no such file or directory"错误。文件在那里

javascript - 使用带有通知程序的 pkg 构建 node.js 可执行文件

javascript - 如何使用 Mongoose 删除对象内的子文档

reactjs - Nextjs - 如何在客户端浏览器中存储 JWT,以便在浏览器重新启动后仍能保存

javascript - fs.writeFile() 只保存部分字符串

javascript - 在 node.js 中一次遍历 50 个项目 block 中的数组