【问题标题】:How to improve authentication in a Perl Dancer app如何改进 Perl Dancer 应用程序中的身份验证
【发布时间】:2013-02-22 18:28:56
【问题描述】:

我正在开发一个 Perl Dancer Web 应用程序,它需要在身份验证方面完成两件事:

  1. 根据 Active Directory 对用户进行身份验证以访问应用程序
  2. 以用户身份进行身份验证以访问几个 .NET Web 服务。

该应用程序由 Apache 在 Linux 机器上作为 CGI 应用程序托管,我对 Apache 的配置没有太多控制权。

以下是当前工作应用程序的工作流程:

  1. 向用户显示登录页面
  2. 用户提交表单时,使用Authen::Simple::ActiveDirectory验证账号是否有效
  3. 使用Dancer::Session::Cookie(加密的cookie)存储用户的凭据
  4. 向用户显示搜索表单
  5. 当用户提交此表单时,使用Authen::NTLMSOAP::Lite 访问.NET 服务(类似于示例here)执行搜索
  6. 向用户显示结果

这里的用户凭据处理与我有关,但我通常对 Web 应用程序和身份验证不熟悉。对于小型内部应用程序,这样可以吗?如果没有,你建议我如何改进这个过程?就像我说的,上面概述的应用程序有效,但我觉得它可以/应该改进。

【问题讨论】:

    标签: web-services perl authentication active-directory dancer


    【解决方案1】:

    一个(部分)解决方案可能是让您的 apache 网络服务器处理 验证。您可以为此使用Kerberos。 因此,只有允许的用户才能访问您的应用程序。在那里面 case $ENV{REMOTE_USER} 包含用户名(例如 foo.bar@MY.DOMAIN.COM)。

    如果您需要有关当前用户的更多信息,您可以查询您的 LDAP(包含在您的域中)。我使用普通 (LDAP) 用户来获取有关当前用户 foo.bar@MY.DOMAIN.COM 的更多信息。

    我知道这只是第一部分。我没有通过 SOAP 使用/传递 Kerberos 票证的经验。但是,如果您设法处理这个问题,您就有了一个干净的 SSO 解决方案。

    HTH

    【讨论】:

      【解决方案2】:

      我们在 Apache 配置中执行此操作。它需要类似下面的东西。您需要一个只读无密码用户才能绑定到 Active Directory。

          AuthName "Active Directory"
          AuthType Basic
          AuthBasicProvider ldap
          AuthLDAPUrl ldap://server:389/OU=COMPANY,DC=COMPANY,DC=com?sAMAccountName,mail,name,extensionAttribute2,memberOf?base?(objectClass=user)
          AuthzLDAPAuthoritative on
          AuthLDAPBindDN "CN=ReadOnlyUser,OU=ServiceAccounts,OU=Users,OU=XXX,OU=COMPANY,DC=COMPANY,DC=com"
          AuthLDAPGroupAttributeIsDN on 
          require valid-user
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-27
        • 1970-01-01
        • 2013-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-08
        • 2019-09-14
        相关资源
        最近更新 更多