[Plone-IT] Apache, Plone e la password 'pippo'

Michele Mordenti michele.mordenti a gmail.com
Mer 23 Lug 2014 06:06:05 UTC


Rispolvero questo vecchio thread poiché penso che ne avrò bisogno nel pomeriggio.
Dovrò tenere Plone in readonly per un paio d'ore.
La scorciatoia http://plone.org/documentation/faq/plone-read-only-mode mi garantisce che i dati non vengano modificati, ma l'esperienza utente non é il massimo: modifichi i contenuti ed al salvataggio errore con classica sbrodolata di eccezioni Python.

Forse mi conviene accompagnarla con le rewrite ad una pagina di cortesia:
<h1>GO AWAY</h1> :-)

--
Sent from iBad
https://twitter.com/micmord

> Il giorno 07/nov/2012, alle ore 12:08, Massimiliano De Ruosi <max.deruosi a uniud.it> ha scritto:
> 
> Stavo appunto cercando qualche informazione su come mettere in https il login con i popup (e questa è la domanda alla lista: qualcuno l'ha già fatto?), e in generale come mettere sotto https plone 4 per gli autenticati, e sono capitato in questo post.
> 
> Per plone senza popup, mi pare funzionino le stesse regole dai tempi di plone 2.5, che sono simili alle tue:
> 
> <VirtualHost *:80>
> 
>  [...]
> 
>  RewriteRule ^($|.*)/login_form$ https://%{SERVER_NAME}$1/login_form [L]
> # RewriteRule ^($|.*)/login$ https://%{SERVER_NAME}$1/login [L]
>  RewriteRule ^/(.*)passwordreset(.*) https://%{SERVER_NAME}/$1passwordreset$2 [L]
> 
>  RewriteCond %{QUERY_STRING}         ^came_from=http\%3A//(.*)
>  RewriteRule ^/(.*)require_login     https://%{SERVER_NAME}/$1require_login\?came_from=https://%1 [L]
> 
>  RewriteCond %{HTTP_COOKIE} __ac=
>  RewriteRule ^(.*) https://%{SERVER_NAME}$1 [NE,L]
> 
>  [...]
> 
>  # Proxy Rewrite sul balancer
>  RewriteRule ^/(.*) http://localhost:9000/VirtualHostBase/http/%{SERVER_NAME}:80/Plone/VirtualHostRoot/$1 [P,L]
> 
> </VirtualHost>
> 
> ...l'unica differenza sostanziale è che io metto in https anche il template "passwordreset"
> Per quel che riguarda il virualhost sulla 443, io ne uso 2, in due files distinti, uno in alternativa all'altro: ssl-open e ssl-locked (più un terzo incluso in entrambi: ssl-common)
> 
> ### ssl-open ###
> # questo file contiene un virtualhost che dovrebbe essere attivo IN ALTERNATIVA a ssl-locked:
> # questo virtualhost è quello normalmente attivo in produzione, e permette l'accesso pubblicatore in https.
> 
>  NameVirtualHost *:443
>  <VirtualHost *:443>
> 
>  Include ssl-common
> 
> # Resto in https nelle pagine dove si immettono le credenziali, anche se non sono ancora loggato
>        RewriteRule ^/(.*)(require_login|login_form|password_form|mail_password_form|mail_password|plone_change_password|passwordreset|pwreset_form)(.*) \
>          http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/$1$2$3 [P]
> # Se non c'è il cookie __ac non sono loggato: torno in http...
>        RewriteCond %{HTTP_COOKIE} !__ac=
>          RewriteRule ^(.*) http://%{SERVER_NAME}$1 [NE,L]
> 
> [...]
> 
> # ...resto in https in tutti gli altri casi
>        RewriteRule ^/(.*) http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/$1 [L,P]
> 
> </VirtualHost>
> ### fine ssl-open ###
> 
> ### ssl-locked ###
> # questo file contiene un virtualhost che dovrebbe essere attivo IN ALTERNATIVA a ssl-open:
> # questo virtualhost impedisce all'utente loggato di operare, e lo rimanda ad una pagina di servizio.
> # viene attivato durante gli aggiornamenti di sistema, per impedire che i pubblicatori facciano modifiche sul
> # server secondario utilizzato mentre il server "di produzione" viene riavviato
> 
> NameVirtualHost *:443
> <VirtualHost *:443>
> 
> Include ssl-common
> 
> # Vado nella pagina di servizio nelle pagine dove si immettono le credenziali, anche se non sono ancora loggato
>        RewriteRule ^/(.*)(require_login|login_form|password_form|mail_password_form|mail_password|plone_change_password|passwordreset|pwreset_form)(.*) \
>          http://%{SERVER_NAME}/pagine-speciali/pubblicazione-sospesa [L]
> 
> # Se c'è il cookie __ac sono loggato: forzo il logout
>        RewriteCond %{HTTP_COOKIE} __ac=
>          RewriteRule ^/(.*) http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/logout [L,P]
> 
> # Se non c'è il cookie __ac non sono loggato: torno in http...
>        RewriteCond %{HTTP_COOKIE} !__ac=
>          RewriteRule ^(.*) http://%{SERVER_NAME}$1 [NE,L]
> 
> # ...mando alla pagina di servizio in http in tutti gli altri casi
>        RewriteRule ^/(.*) http://pagine-speciali/pubblicazione-sospesa [L,P]
> 
> </VirtualHost>
> ### fine ssl-locked ###
> 
> ### ssl-common ###
> # Questre istruzioni sono comuni ai virtualhost SSL,
> # e sono pensate per essere incluse DENTRO il virtualhost
> 
> [...]
> 
> # Resto in https se vengono richieste risorse statiche
>        RewriteRule ^/(.*)(gif|jpg|css|js)(.*) \
>          http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/$1$2$3 [P]
> 
> ### fine ssl-common ###
> 
> Anche qui, la differenza è che resto in https anche senza cookie __ac in questi templates:
> - require_login
> - login_form
> - password_form
> - mail_password_form
> - mail_password
> - plone_change_password
> - passwordreset
> - pwreset_form
> 
> ...e anche in questo caso, si tratta di direttive pensate per plone 2.5: su plone4 sono ancora valide? Ci sono altri templates da "proteggere" senza cookie __ac? ...sempre che qualcuno sia arrivato a leggere fin quaggiù :-)
> 
> my 2 cent,
> Max
> 
> 
> Quoting Michele Mordenti <michele.mordenti a gmail.com>:
> 
>> Plone necessita di una password minima di 5 caratteri: quale migliore
>> password di "pippo"?
>> Il problema che sto affrontando è che la password viaggia in chiaro:
>> come faccio a proteggere la mia superpassword "pippo" da occhi
>> indiscreti?
>> 
>> Googlando ho trovato tre guide fare lo switch da HTTP a HTTPS
>> - http://plone.org/documentation/kb/apache-ssl/
>> - http://lab.oscert.net/plone/configurare-plone-dietro-apache-e-varnish
>> - http://dtranhuu.dyndns.org/news/apache2-in-front-of-plone-on-ubuntu-server-9.10
>> ma nessuna delle tre ha funzionato a dovere; in particolare mi ha dato
>> diversi grattacapi la parte relativa alla richiesta di una risorsa
>> privata.
>> Lavorandoci un po' sopra ora tutto sembra filare liscio e mi permetto
>> di condividere con voi la soluzione che ho trovato nell'auspicio di:
>> - preparare pappa pronta per altri
>> - se sbaglio... mi corriggerete
>> 
>> Condizioni al contorno:
>> - istanza Plone di debug attiva sulla porta 8088
>> - Plone senza "pop-up semplici" in Pannello di Controllo ->Temi (il
>> giochino non funziona con la popup di login)
>> - id istanza Plone: "Plone"
>> - apache con cartella virtuale "/plonetest" che redirige la root
>> dell'istanza "Plone"
>> 
>> Sotto la configurazione apache per HTTP
>> 
>> <VirtualHost *:80>
>>    ... TUTTO IL RESTO NON PLONESCO ...
>> 
>>    <Location /plonetest>
>>        Deny from All
>>        Allow from 192.168.1.1/32
>>    </Location>
>> 
>>    # Rewrite rules
>>    RewriteEngine On
>>    RewriteLog /var/log/apache2/plonetest-rewrite.log
>>    RewriteLogLevel 4
>> 
>>    # Redirigo su HTTPS se chiedo una risorsa Plone ed il cookie
>> "__ac" e' settato:
>>    RewriteCond %{REQUEST_URI} ^/plonetest(.*)
>>    RewriteCond %{HTTP_COOKIE} __ac=
>>    RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R,L]
>> 
>>    # Redirigo su HTTPS alla richiesta di login dell'utente:
>>    RewriteRule ^/plonetest/login(.*)$
>> https://%{SERVER_NAME}/plonetest/login$1 [R,L]
>> 
>>    # Redirigo su HTTPS alla richiesta di una risorsa privata plonesca:
>>    RewriteCond %{REQUEST_URI} ^/plonetest(.*)
>>    RewriteCond %{QUERY_STRING} came_from=http(.*)
>>    RewriteRule ^($|/.*)require_login$
>> https://%{SERVER_NAME}$1require_login?came_from=https%1 [NE,L]
>> 
>>    # Alla normale richiesta di una pagina servita da Plone 'proxo' l'istanza:
>>    RewriteRule  ^/plonetest(.*)$
>> http://localhost:8088/VirtualHostBase/http/%{SERVER_NAME}:80/Plone/VirtualHostRoot/_vh_plonetest$1
>> [L,P]
>> </VirtualHost>
>> 
>> 
>> Sotto la configurazione apache per HTTPS
>> <VirtualHost 192.168.1.2:443>
>>    ... TUTTO IL RESTO NON PLONESCO ...
>> 
>>    <Location /plonetest>
>>        Deny from All
>>        Allow from 192.168.1.1/32
>>    </Location>
>> 
>>    # Rewrite rules
>>    RewriteEngine On
>>    RewriteLog /var/log/apache2/ssl_plonetest-rewrite.log
>>    RewriteLogLevel 4
>> 
>>    # Proxo Plone in HTTPS alla richiesta di autenticazione
>>    # (previene redirezione su HTTP per regola __ac non ancora impostato):
>>    # - alla richiesta di login
>>    # - utente autenticato, forse superflua
>>    # - tengo l'utente ancora in HTTPS nel caso si volesse
>> riautenticare nel form presente nella pagina
>>    # - alla richiesta risorsa privata
>>    RewriteCond %{REQUEST_URI} ^/plonetest/login.* [OR]
>>    RewriteCond %{REQUEST_URI} ^/plonetest/logged_in.* [OR]
>>    RewriteCond %{REQUEST_URI} ^/plonetest/logged_out.* [OR]
>>    RewriteCond %{REQUEST_URI} ^/plonetest/(.*)require_login(.*)$
>>    RewriteRule  ^/plonetest(.*)$
>> http://localhost:8088/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/_vh_plonetest$1
>> [L,P]
>> 
>>    # se richiedo pagina "Plone" ed il cookie "__ac" non e' settato
>> (utente non autenticato) allora redirigo di HTTP:
>>    RewriteCond %{REQUEST_URI} ^/plonetest(.*)$
>>    RewriteCond %{HTTP_COOKIE} __ac=.deleted. [OR]
>>    RewriteCond %{HTTP_COOKIE} !__ac=
>>    RewriteRule ^/(.*)$ http://%{SERVER_NAME}/$1 [R,L]
>> 
>>    # Alla normale richiesta di una pagina servita da Plone con
>> l'utente autenticato 'proxo' l'istanza:
>>    RewriteRule  ^/plonetest(.*)$
>> http://localhost:8088/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/_vh_plonetest$1
>> [L,P]
>> </VirtualHost>
>> 
>> Si può fare di meglio?
>> Grazie, ciao.
>> 
>> --
>> Michele Mordenti
>> _______________________________________________
>> Plone-IT mailing list
>> Plone-IT a lists.plone.org
>> https://lists.plone.org/mailman/listinfo/plone-plone-it
>> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
> 
> 
> 
> Massimiliano De Ruosi
> ---------------------
> AINF (Area servizi informatici e multimediali)
> Universita' degli Studi di Udine
> Via delle Scienze, 208
> 33100, Udine (UD)  ITALY
> 
> Tel.  +39 (0)432 55 8893
> Cell. +39 320 4350861
> Fax:  +39 (0)432 55 8911 (segr. AINF)
> email: massimiliano.deruosi a uniud.it
> 
> ----------------------------------------------------------------------
> SEMEL (SErvizio di Messaging ELettronico) - AINF, Universita' di Udine
> 
> 
> _______________________________________________
> Plone-IT mailing list
> Plone-IT a lists.plone.org
> https://lists.plone.org/mailman/listinfo/plone-plone-it
> http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20140723/add6177b/attachment-0001.html>


Maggiori informazioni sulla lista Plone-IT