Node.js docker中使用kerberos和openldap的SSO
我正在尝试创建一个测试环境,它将帮助我使用kerberos实现SSO身份验证(生产环境是客户,所以我没有直接访问它的权限)。我开始在docker中设置自己的环境。应用程序基于前端中的react并调用node.js REST API(express) 我的计划是建立Node.js docker中使用kerberos和openldap的SSO,node.js,reactjs,docker,kerberos,openldap,Node.js,Reactjs,Docker,Kerberos,Openldap,我正在尝试创建一个测试环境,它将帮助我使用kerberos实现SSO身份验证(生产环境是客户,所以我没有直接访问它的权限)。我开始在docker中设置自己的环境。应用程序基于前端中的react并调用node.js REST API(express) 我的计划是建立 具有用户和组的LDAP结构 从node.js后端访问LDAP 使用具有LDAP用户名和密码的回退进行身份验证 使用LDAP设置KERBEROS 将pc(win、mac)添加到域 使用来自浏览器的票证验证kerberos 我成功地完成了
ldap.example.com
)。我可以管理用户和组,也可以使用admin/tech user从后端访问LDAP并检索数据。我可以使用用户的ldap用户名(uid)和密码对其进行身份验证
问题是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上试过这个。我可以看到网络帐户服务器,并且我可以成功地添加它,但是当我打开Directory utility并尝试添加active Directory域时,它失败了,出现了一个一般性错误无法联系身份验证服务器
但主要的问题是LDAP和kerberos映像之间的连接,我尝试了几次配置,但仍然不知道如何在kerberos身份验证中使用LDAP用户凭据 我为这些问题制作了一个功能齐全的Docker测试环境,包括:
- OpenLDAP和Kerberos模式,因此在第一次运行时,它与以下内容兼容:
- 具有OpenLDAP正确连接配置的Kerberos:
- 自动连接到Kerberos环境的NodeJS容器:
- Passport Kerberos验证器,它是用TypeScript编写的,与较新版本的Kerberos兼容(,这里还描述了如何将浏览器配置为使用Kerberos进行身份验证):
LDAP用户/密码回退在这种体系结构中是一种不好的做法。尽管如此,您也可以通过Passport以这种方式建立身份验证过程,我还没有尝试过,但该软件包似乎适合于此。您是否检查了主机文件的ip是否正确,以及防火墙是否阻止了某些端口或ip?