【问题标题】:Zend - Basic auth in Apache using LDAPZend - Apache 中使用 LDAP 的基本身份验证
【发布时间】:2011-12-02 17:53:28
【问题描述】:

我是 Zend 和 LDAP 的新手,所以我遇到了真正的堆栈溢出... 我有什么:

  • LDAP 服务器
  • Apache 服务器
  • Zend 应用程序

我需要什么:

  • 当用户在应用程序的任何页面上 未授权显示 Apache 的 基本身份验证提示
  • 如果登录并 那么 LDAP 服务器上的密码是正确的 重定向到索引控制器。

我已经阅读了大量有关 Zend_Auth、authnz_ldap_module 等的手册,但无法解决给定的任务。 任何帮助 - 示例、解决方案、链接 - 将不胜感激!

【问题讨论】:

    标签: apache zend-framework ldap authentication


    【解决方案1】:
    AuthType 基本 AuthName "安全登录" AuthBasicProvider ldap AuthLDAPURL“ldaps://ldap.example.com/ou=People,dc=exmaple,dc=com?uid?sub”。

    将它添加到您的目录指令中,这将满足您对 ldap auth 的需求。但是您仍然需要弄清楚如何将新来的访问者重定向到索引,可能是 cookie。

    【讨论】:

      【解决方案2】:

      我最近完成了整个 ACL 流程,并对结果感到满意。这是我实现的:

      1. 扩展 Zend_ACL 并使用其构造函数添加您的角色(包括继承关系)。

      2. 创建一个加载到引导程序中的操作助手。 (您需要尽早加载它,以便使用它的钩子,例如preDispatch)。

      3. 编辑您要保护的每个控制器的 init() 并调用新的 ACL 助手,传入您要应用于此控制器的规则,例如:allow('member', 'edit);

      真正的工作是由动作助手完成的。它有四个功能:

      • init() - 实例化您的新 ACL 类,然后添加一个反映当前控制器名称的新资源,
        即。 $this->_resource = $this->getRequest()->getControllerName())

      • preDispatch() - 使用Zend_Auth 获取当前用户类型(或在用户未登录的情况下分配默认的访客)。使用 ACL 检查请求是否被允许,
        $this->_acl->isAllowed($currentRole, $resource, $action)
        注意,请求的操作成为 ACL 权限。

      • allow() - 这只是代理到 ACL 对象上的 allow() 函数。它由控制器构造函数调用以在 ACL 中设置规则。

      • deny() - 至于允许。

      所以,在运行时,一系列事件如下:

      • 动作助手被加载到引导程序中。这 a) 实例化自定义 ACL 对象,该对象设置自己的角色,然后 b) 添加当前控制器名称作为资源。

      • 控制器init() 正在运行。它调用助手的allow()deny() 方法来设置规则。

      • helper的preDispatch()运行,如果!isAllowed(),用户被重定向。

      我正在针对数据库进行身份验证,但如果您使用的是LDAP,同样的逻辑也适用。 (在这种情况下,Apache 的基本身份验证提示是默认挑战吗?如果不是,那可能会增加额外的复杂性)。

      我改编自 Rob Allen 的书(Zend Framework in Action)和其他各种来源。请注意,一些 Zend 专业人士推荐基于模型(而不是控制器操作)的 ACL。我也会考虑一下。

      上述方法的一个特别方便的方面是持续维护 ACL 规则非常容易。在处理特定控制器时,您可以在 init() 中设置其 ACL 规则。

      【讨论】:

      • 感谢您提供如此详细的答案,但我不确定我是否需要 ACL - 我有一个 Intranet 应用程序,我只需要通过身份验证从 LDAP 获取用户信息。那么“基本 Apache 身份验证”呢?它是某些条件的必需原因(Kerberos 是下一个任务)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 2011-05-05
      • 1970-01-01
      相关资源
      最近更新 更多