Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
Web services 如何改进Perl Dancer应用程序中的身份验证_Web Services_Perl_Authentication_Active Directory_Dancer - Fatal编程技术网

Web services 如何改进Perl Dancer应用程序中的身份验证

Web services 如何改进Perl Dancer应用程序中的身份验证,web-services,perl,authentication,active-directory,dancer,Web Services,Perl,Authentication,Active Directory,Dancer,我正在开发一个Perl Dancer web应用程序,它需要在身份验证方面完成两件事: 基于Active Directory对访问应用程序的用户进行身份验证 以用户身份进行身份验证,以访问两个.NET web服务 该应用程序由Apache在Linux机器上作为CGI应用程序托管,我对Apache的配置没有太多控制权 以下是当前正在工作的应用程序的工作流: 向用户显示登录页面 用户提交表单时,使用验证帐户是否有效 使用(加密的cookie)存储用户的凭据 向用户显示搜索表单 当用户提交此表单时,使

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

  • 基于Active Directory对访问应用程序的用户进行身份验证
  • 以用户身份进行身份验证,以访问两个.NET web服务
  • 该应用程序由Apache在Linux机器上作为CGI应用程序托管,我对Apache的配置没有太多控制权

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

  • 向用户显示登录页面
  • 用户提交表单时,使用验证帐户是否有效
  • 使用(加密的cookie)存储用户的凭据
  • 向用户显示搜索表单
  • 当用户提交此表单时,使用和访问.NET服务(与示例类似)以执行搜索
  • 向用户显示结果
  • 这里的用户凭证处理与我有关,但我通常不熟悉web应用程序和身份验证。对于小型内部应用程序,这样可以吗?如果没有,您建议我如何改进此流程?正如我所说,上面概述的应用程序可以工作,但我觉得它可以/应该改进。

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

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

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


    我们在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