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

Luca Fabbri keul a redturtle.it
Mer 23 Lug 2014 06:58:09 UTC


2014-07-23 8:06 GMT+02:00 Michele Mordenti <michele.mordenti a gmail.com>:
> 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> :-)
>

Il read-only mode è sempre un'esperienza utente piuttosto pessima,
spesso anche per gli anonimi se hai alcuni tipi di fuzionalità nel
sito.

Potresti tentare la strada del disabilitare la source users in
acl_users, togliendo la funzionalità Authentication.
L'effetto sarebbe che gli utenti smetterebbero di autenticarsi.

Ma dovrai anche gestire gli utenti che al momento sono autenticati.
Per far uscire con gentilezza gli utenti dovresti guardare nel plugin
che gestisce la session ("Invalidate all session identifiers"). Mai
provato, però dovrebbe funzionare.



> --
> 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
>
>
> _______________________________________________
> 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



-- 
Saluti/Regards

Luca Fabbri - RedTurtle Technology
E-mail: luca.fabbri a redturtle.it
Web Site: http://www.redturtle.it/
Phone: +39 0532 1915958
Fax: +39 0532 287070


Maggiori informazioni sulla lista Plone-IT