我正在尝试创建一个测试环境,以帮助我使用kerberos实施SSO身份验证(生产环境是客户,因此我无法直接访问它)。我开始在Docker中设置自己的环境。应用程序基于前端的React并调用node.js REST API(express)
我的计划是设置
我成功地执行了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用户凭证。
我针对这些问题制作了功能齐全的Docker测试环境,其中包括:
我建议使用dpage / pgadmin4映像进行LDAP手动配置(用户,组等)。
在此体系结构中,LDAP用户/密码回退是一种不好的做法。但是,你也可以通过Passport建立身份验证过程,虽然我还没有尝试过,但是passport-ldapauth软件包似乎对此很有帮助。