perl - LDAP 身份验证 CGI

标签 perl unix tomcat ldap cgi

我有一个部署到 tomcat 的简单网页,它根据用户选择运行某些 shell 脚本。这些页面是用 html 和 cgi/perl 编写的。

我们已经有一个工作的 ldap 服务器和目录。我需要能够为我创建的网页添加安全性,以便在尝试访问主页或任何子页面时要求用户使用他们的 ldap 帐户登录。

如何将 ldap 身份验证添加到我的网页?

请非常具体,因为我是新手。包括代码在内的分步说明将不胜感激。谢谢你

我在谷歌上做了很多研究,但所有的解决方案都是通用的,我不知道从哪里开始。

这是一篇很好的文章,但我不确定应该将我的 ldap 连接和绑定(bind)(我的哪个页面)放在哪里?我如何确保身份验证也适用于子页面或将来创建的任何其他页面?

http://www.perlmonks.org/?node_id=32196

干杯

最佳答案

This is a good article, but I'm not sure where do I put my connection to ldap and the binding (which of my pages)? How do I make sure the authentication will apply to the sub pages as well, or any other one created in the future?

您现在正在为您的应用程序添加状态。您最初可能会考虑在 tomcat 中而不是在您的应用中实现身份验证 (authn) 和授权 (authz)。

如果您决定不在 tomcat 中实现,而选择在 perl 中实现,那么您只是决定向您的应用程序添加状态,这意味着您需要添加某种 session 处理。看看 CGI::Session,CPAN 上还有很多其他的 session 处理模块。避免 Apache::Session。如果事务运行时间过长,它的锁处理会带来很多痛苦。在 cookie 中使用 session key 。通过 SSL 发送所有内容。如果您不使用 SSL,黑客就可以拦截您的 session key ,然后劫持 session 。

设置 session 基础结构后,您需要创建一个登录机制,通常是一个带有用户名和密码的表单。当该表单被提交时,它背后的 CGI 会对密码进行神奇的加密,然后进行 LDAP 舞蹈:

  1. 如果连接不存在,请连接到目录服务器。

2a。匿名或作为应用程序用户绑定(bind)到服务器,通过 CN 搜索用户,使用 DN 和密码作为用户绑定(bind)

2b。从用户名计算 DN,与 DN 和密码的密码绑定(bind)。

通常,第 3 步是检查用户记录中的某些授权指示符,它可以是是/否访问指示符,也可以是角色或权限列表。

如果用户成功通过身份验证并获得授权,则将一些授权信息写入用户的 session 。

然后,您应用的每个后续页面都会检查用户是否已登录和/或是否具有使用该页面的正确授权。如果未经授权,您可以将他们发送回登录后登录页面,或者如果他们未登录则返回登录页面。

基本上,您只需将通常的“查询数据库的用户表”替换为对目录服务器的 LDAP 查询。

关于perl - LDAP 身份验证 CGI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12957662/

相关文章:

java - 在 jax-rs 中传递 post 数据参数并通过 ajax 调用

windows - 使用 MinGW 在 Win10 上安装 perl 时出错

perl - 模板::工具包变量处理

java - 默认 JAVA,$JAVA_HOME 与 sudo update-alternatives --config java

linux - 并行运行多个可执行文件,限制为 5

unix -/bin/sed '/^$/d' |/bin/sed -e 's/^[\t]*//' 是什么意思?

perl - 我可以在 Perl 中将数组初始化为给定大小吗?

arrays - perl中的$ {…}到底是什么意思?

tomcat - 启用转发 header 后的 Spring Boot cookie 域问题

java - 如何在我本地机器上的eclipse中运行Tomcat服务器上的web应用项目