【问题标题】:SSO with kerberos and openldap in docker在 docker 中使用 kerberos 和 openldap 进行 SSO
【发布时间】:2022-02-21 02:50:54
【问题描述】:

我正在尝试创建一个测试环境,以帮助我使用 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上试过这个。我可以看到网络帐户服务器并且可以成功添加它,但是当我打开目录实用程序并尝试添加活动目录域时,它会失败并出现一般错误Authentication server could not be contacted

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

【问题讨论】:

  • 您是否检查了您的主机文件以获取正确的 ip,并检查了防火墙是否阻止了某些端口或 ip?

标签: node.js reactjs docker kerberos openldap


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多