Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js docker中使用kerberos和openldap的SSO_Node.js_Reactjs_Docker_Kerberos_Openldap - Fatal编程技术网

Node.js docker中使用kerberos和openldap的SSO

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 我成功地完成了

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

我的计划是建立

  • 具有用户和组的LDAP结构
  • 从node.js后端访问LDAP
  • 使用具有LDAP用户名和密码的回退进行身份验证
  • 使用LDAP设置KERBEROS
  • 将pc(win、mac)添加到域
  • 使用来自浏览器的票证验证kerberos
  • 我成功地完成了步骤1-3。我正在使用一个运行在docker中的active directory映像(可以通过域名访问它,比如说
    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手动配置(用户、组等)


    LDAP用户/密码回退在这种体系结构中是一种不好的做法。尽管如此,您也可以通过Passport以这种方式建立身份验证过程,我还没有尝试过,但该软件包似乎适合于此。

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