使用Plack/PSGI/Poet应用程序进行身份验证和/或HTTPS



我需要构建一个简单的web应用程序。我决定与Poet(Mason2)合作,后者使用Plack。

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

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

以下是两种可能的解决方案:

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

问题:

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

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

附言:我不在乎剩下的交流。我只需要不允许获取密码的安全身份验证。

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

另一个更简单的选择是使用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=...

您可以在Apache这样的Web服务器上运行应用程序,该服务器知道如何安全地对用户进行身份验证。

要做到这一点,您有两个选项:

  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,这将限制您对代理解决方案的选择。

如果使用Plack+Apache/mod_perl ,Apache配置如下所示

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

相关内容

  • 没有找到相关文章