2013-07-08 43 views
7

我需要構建一個簡單的Web應用程序。我決定用PoetMason2),它使用Plack。使用Plack/PSGI/Poet應用程序的身份驗證和/或HTTPS

該應用程序應該被允許使用只有通過身份驗證的用戶,所以我需要建立一些登錄/密碼功能。

已經有一個Plack模塊Plack::Middleware::Auth::Basic允許使用基本用戶身份驗證,可以設置檢查.htpasswd或類似。但基本認證不是很安全;任何人都可以通過數據包捕獲等獲取登錄密碼。

這裏有2個可能的解決方案:

  • 通過HTTPS運行我app.psgi(443) - 鏈路層加密
  • 或者是有一些更好的方法,權威性,使無HTTPS安全身份驗證?

的問題:

  • 對於HTTPS - 我不知道如何通過HTTPS運行我app.psgi。我是否需要修改我的應用程序?任何鏈接顯示我如何通過https運行plackup
  • 或第二:有沒有一些方法(中間件/或Perl模塊)什麼讓我建立了標準的未加密端口安全認證(80)

那麼,什麼是一個相對簡單的方法通過Plack應用程序實現安全認證? PS:我不關心其他的溝通。我不關心溝通的其他部分。我不關心溝通的其他部分。我不關心溝通的其他部分。我只需要安全的身份驗證,不允許獲取密碼。

PPS:https很容易使用apache(和自簽名)證書。但我不知道如何與plackup(或任何其他基於Plack的服務器)配合使用

回答

7

另一個更簡單的選擇是使用什麼內置plackup去,接龍,和薩爾:

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

(或)

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

(或)

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

您可以在知道如何安全認證用戶的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,這會將您的選項限制爲代理解決方案。

2

Apache的配置是這樣的,如果你有普拉克+阿帕奇/ mod_perl的

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