【问题标题】:Authentication and/or HTTPS with Plack/PSGI/Poet application使用 Plack/PSGI/Poet 应用程序进行身份验证和/或 HTTPS
【发布时间】:2013-07-08 15:56:29
【问题描述】:

我需要构建一个简单的网络应用程序。我决定使用使用 Plack 的Poet (Mason2)。

该应用程序应该只允许经过身份验证的用户使用,所以我需要构建一些登录/密码功能。

已经有一个 Plack 模块 Plack::Middleware::Auth::Basic 允许使用基本用户身份验证,从而可以设置检查 .htpasswd 或类似的。但是基本认证不是很安全;任何人都可以通过抓包等方式获取登录密码。

这里有两种可能的解决方案:

  • 通过 HTTPS(443) 运行我的 app.psgi - 链接级加密
  • 或者是否有更好的身份验证方法可以在没有 https 的情况下进行安全身份验证?

问题:

  • 关于 HTTPS - 我不知道如何通过 HTTPS 运行我的app.psgi。我需要稍微修改我的应用程序吗?有什么链接可以告诉我如何通过 https 运行 plackup
  • 或者第二个:是否有某种方法(中间件/或 perl 模块)允许我在标准未加密端口上构建安全身份验证?(80)

那么,使用 Plack 应用程序实现安全身份验证的相对简单的方法是什么?

PS:我不关心其他的交流。我只需要不允许获取密码的安全身份验证。

PPS:使用 apache(和自签名)证书很容易实现 https。但我不知道如何使用plackup(和或任何其他基于 Plack 的服务器)

【问题讨论】:

    标签: perl plack psgi poet


    【解决方案1】:

    另一个更简单的选择是使用 plackup、Starman 和 Thrall 中内置的内容:

    plackup --enable-ssl --ssl-key-file=... --ssl-cert-file=...
    

    (或)

    starman --enable-ssl --ssl-key=... --ssl-cert=...
    

    (或)

    thrall --enable-ssl --ssl-key-file=... --ssl-cert-file=...
    

    【讨论】:

      【解决方案2】:

      您可以在知道如何安全地验证用户身份的某些网络服务器(如 Apache)后面运行您的应用程序。

      为此,您有两种选择:

      1. 使用 FastCGI
      2. 对您的应用的代理请求。

      要走 FastCGI 路线,请像这样使用plackup

      plackup -s FCGI  myapp.psgi
      

      在您的 Apache 配置中,使用如下内容:

      LoadModule fastcgi_module libexec/mod_fastcgi.so
      <IfModule mod_fastcgi.c>
          FastCgiExternalServer /tmp/myapp.fcgi -host localhost:5000
          Alias /myapp/    /tmp/myapp.fcgi/
      </IfModule>
      

      或者,您可以向您的应用发出 Apache 代理请求:

      ProxyPass /myapp    http://localhost:5000/
      

      由于不建议将plackup 用于生产系统,您应该查看Starman,这将限制您对代理解决方案的选择。

      【讨论】:

        【解决方案3】:

        如果你使用 Plack+Apache/mod_perl,Apache 配置看起来像这样

        <Location /path/myapp>
          SetHandler perl-script
          PerlResponseHandler Plack::Handler::Apache2
          PerlSetVar psgi_app /path/to/my.psgi
        </Location>
        

        【讨论】:

          猜你喜欢
          • 2011-06-27
          • 1970-01-01
          • 1970-01-01
          • 2017-03-03
          • 1970-01-01
          • 1970-01-01
          • 2018-06-27
          • 2021-07-30
          • 1970-01-01
          相关资源
          最近更新 更多