Warm tip: This article is reproduced from serverfault.com, please click

node.js-在Docker中使用kerberos和openldap的SSO

(node.js - SSO with kerberos and openldap in docker)

发布于 2019-09-02 12:59:53

我正在尝试创建一个测试环境,以帮助我使用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步。我正在为在docker中运行的活动目录使用OpenLdap映像(可以通过域名访问ldap.example.com)。我可以管理用户和组,也可以使用admin / tech用户从后端访问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 auth中使用ldap用户凭证。

Questioner
l2ysho
Viewed
12
1,037 2020-12-28 17:20:45

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

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

在此体系结构中,LDAP用户/密码回退是一种不好的做法。但是,你也可以通过Passport建立身份验证过程,虽然我还没有尝试过,但是passport-ldapauth软件包似乎对此很有帮助