我需要构建一个简单的Web应用程序。我决定使用Poet(Mason2),它使用Plack。
应该允许应用程序仅由经过身份验证的用户使用,因此我需要构建一些登录/密码功能。
Plack模块Plack::Middleware::Auth::Basic允许使用基本用户身份验证,可以设置检查.htpasswd
或类似功能。但基本身份验证不是很安全;任何人都可以通过数据包捕获等方式获取登录密码。
以下是两种可能的解决方案:
问题:
app.psgi
。我需要稍微修改一下我的应用程序吗?显示如何通过https运行plackup
的任何链接?那么,使用Plack应用程序实现安全身份验证的相对简单方法是什么?
PS:我不关心其余的沟通。我只需要安全的身份验证,不允许获取密码。 PPS:https很容易使用apache(和自签名)证书。但我不知道如何使用plackup
(以及任何其他基于Plack的服务器)
答案 0 :(得分:11)
另一个更简单的选择是使用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=...
答案 1 :(得分:3)
您可以在一些知道如何安全地验证用户身份的Apache等Web服务器后面运行您的应用程序。
为此,您有两种选择:
要使用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
,这将限制您对代理解决方案的选择。
答案 2 :(得分:3)
如果你使用Plack + Apache / mod_perl
,Apache配置看起来像这样<Location /path/myapp>
SetHandler perl-script
PerlResponseHandler Plack::Handler::Apache2
PerlSetVar psgi_app /path/to/my.psgi
</Location>