Hlavní menu

Nástroje

WebKiv / ModulLogin

View (print) - Edit page | Recent changes - Page history

Updated 15 December 2011, 14:53 by PremekBrada

WebKiv.ModulLogin History

Hide minor edits - Show changes to output

15 December 2011, 14:53 by PremekBrada -
Changed lines 167-170 from:
[[Attach:JarInstallFile_complete.zip|kompletní řešení]]
to:
[[Attach:JarInstallFile_complete.zip|kompletní řešení]]

----
Patří do KategorieModulyWebuKiv
25 January 2010, 08:58 by PremekBrada -
Changed line 18 from:
* opatchuje se OpenCms (patch je v svn)
to:
* opatchuje se OpenCms (patch je v svn) -- pro build je třeba použít opatchovaný ant script opencms, aby se přeložily i cz.zcu.kiv třídy)
25 January 2010, 08:56 by PremekBrada -
Changed line 18 from:
* opatchuje se OpenCms (TBD kde je patch)
to:
* opatchuje se OpenCms (patch je v svn)
02 October 2009, 18:12 by PremekBrada - přesunuto z ManualModulLogin
Added lines 1-167:
Zde jsou technické poznámky k modulu přihlašování - integrovaný Kerberos login pro OpenCms.

V tomto návodu se předpokládá, že systém [=OpenCms=] je nainstalován ve standardním adresáři opencms.

!! Jednoduché řešení (nasazení 4/2009)

Platí pro nasazení Apache + Tomcat, kde:

* vynucování HTTPS obstaráva Apache
* Tomcat není schopen rozpoznat HTTP x HTTPS - [@request.isSecure()@] je vždy [@false@]
* nelze použít validační filtr.

Podrobnosti viz ZabezpecenePrihlaseni (Jednoduché řešení).

!!! Instalace

* do [@<opencmsroot>/WEB-INF/lib@] adresáře se přidá [@kerberos-authentication.jar@] (J.Boháč BP 2007) TBD .jar ke stažení
* opatchuje se OpenCms (TBD kde je patch)
* z plné varianty popsané níže se použijí pouze kroky 6 a 7

* nastaví se zabezpečení následujících přihlašovacích stránek (udělá se v cfg Apache):
** /opencms/system/login
** umístění [@login_element_secure.jsp@] resp. frontendové stránky, do které je vkládán
* pokud se používá v šabloně login_element.jsp (tlačítko "přihlásit se" - nikoli odkaz), nastaví se v login_element.jsp pro přihlášení form action odkaz na [@login_element_secure.jsp@] resp stránku na které je vkládán

(Prostě: pouze na zabezpečené stránce může být login formulář, který je v @@elements/secure-login-form.jsp@@ .)

Archív s instalačními soubory: [[Attach:login_forms.zip|login fomuláře]].

!!! Poznámky k implementaci

* V přihlašovacím formuláři @@secure-login-form.jsp@@ je třeba nastavit @@final String SITE_URI@@ na správnou hodnotu podle webu, na kterém je přihlašování nasazeno (např. @@= "http://beta.kiv.zcu.cz";@@).

----

!! Kompletní řešení

'''[+1.+] '''Zastavte Tomcat.

'''[+2.+] '''Nastavení zabezpečeného přístupu https v souboru [@<CATALINA_HOME>/conf/server.xml@] pro Tomcat. Viz. [[http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html]]

'''[+3.+] '''Zabezpečení back-end (workplace) [=OpenCms=]

{-V souboru <opencmsroot>/WEB-INF/config/opencms-system.xml, nastavíme: -}

[@<sites>
<workplace-server>https://server_name1:secure_port</workplace-server>
<default-uri>/sites/default/</default-uri>
<site server="http://server_name1:unsecure_port" uri="/sites/default/">
<secure server="https://server_name1:secure_port" exclusive="true" error="false" />
</site>
</sites>@]


{-Tag ''<secure>'' v daném tvaru je třeba jen u definice ''<site>'', která má server shodný s ''<workplace-server>''.-}

*NALEZEN PROBLÉM*: divné chování workplace cms po výše uvedeném nastavení

'''Použít toto řešení:'''

Do ''<opencmsroot>/WEB-INF/web.xml''

[@<security-constraint>
<web-resource-collection>
<web-resource-name>SecureWorkplace</web-resource-name>
<url-pattern>/opencms/system/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>@]

*Otazník*: jak u multisite?

'''[+4.+] '''Instalace změněných souborů na systém [=OpenCms=]

K instalaci slouží _ANT-soubor_. Před jeho spuštěním je potřeba vzít na vědomí následující věci:
* Spuštěním tohoto souboru dojde k přepsání některých tříd v instalaci [=OpenCms=].
* Aby bylo možné tyto změny kdykoliv vrátit a uvést tak systém do původního stavu, obsahuje _ANT-soubor_ také cíl [@resetChanges@]. Při instalaci se totiž vytvoří záloha původního souboru [@opencms.jar@]. Místo kam se tento soubor uloží, je možné nastavit pomocí property [@backupDir@] implicitně se tento adresář jmenuje [@Backup@]. Pomocí cíle [@resetChanges@] se tedy tento původní soubor může vrátit na Tomcat a vymazat tak změny provedené v [=OpenCms=].

Instalace se spustí příkazem:
->[@ant -buildfile installToOpenCms.xml@]

a provede automaticky následující kroky:

a) Do [=OpenCms=] se nakopírují následující soubory:
* [@cz.zcu.kiv.opencms@]
* [@authentication.jar@]

b) Změní se soubor:
* [@opencms.jar@]

c) V instalačním adresáři Tomcatu se vytvoří adresář [@Kerberos_Configuration@], do kterého se nakopírují soubory potřebné pro správnou funkčnost autentizace protokolem Kerberos:
* [@krb5.conf@]
* [@KerbNastaveni.conf@]

'''[+5.+] '''Nastavení filtru v [@<opencmsroot>/WEB-INF/web.xml@]

Do tagu [@<web-app>@] přidáme:

[@<filter>
<filter-name>[=ValidateAuthFilter=]</filter-name>
<filter-class>cz.zcu.kiv.opencms.ValidateAuthFilter</filter-class>
<init-param>
<param-name>timeout</param-name>
<param-value>15000</param-value>
</init-param>
<init-param>
<param-name>val-url</param-name>
<param-value>https://server_name1:secure_port/opencms/opencms/system/modules/org.opencms.welcome/elements/login_element_secure.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ValidateAuthFilter</filter-name>
<url-pattern>/opencms/*</url-pattern>
</filter-mapping>@]

[@server_name1:secure_port@] - jméno serveru s portem HTTPS

[@timeout@] – čas po kterém bude při requestu vyvolána validační smyčka\\
[@val-url@] – url validační stránky, která je součástí welcome modulu

Filter je mapován na všechny stránky.

'''[+6.+] '''Nastavení cesty k [@LoginConfigurationFile@]

Tento file říká Javě, že si má pro autentikaci používat Kerberos (příslušné třídy v [@com.sun.security.auth.module.Krb5LoginModule@]). Cesta k němu se nastavuje v Tomcat Java Options – tato vlastnost poté platí jen pro Tomcat a ne pro celý JVM.

Soubor se při instalaci modulu [=ANTem=] nakopíruje do adresáře [@Kerberos_Configuration@] v rootu Tomcatu.

Nastavení cesty se provede pomocí následující konstrukce:
[@-Djava.security.auth.login.config=CESTA_K_KerbNastaveni.conf@]
Pro Linux se toto provede pomocí doplnění hodnoty proměnné [@CATALINA_OPTS@] v souboru [@/etc/environment@], nebo přímo ve spouštěcím scriptu tomcatu ([@/etc/init.d/tomcat@]). Pro změnu těchto souborů musíte mít root práva.

Dalším krokem je nastavení cesty k souboru, který obsahuje parametry protokolu Kerberos 5. Tento soubor by se na všech počítačích používaných v prostředí ZČU již měl nacházet na správném místě (kde jej Java standardně vyhledává). Na linuxových strojích se tento soubor jmenuje [@krb5.conf@] a je v adresáři [@/etc@], na windows se tento soubor jmenuje [@krb5.ini@] a měl by být v adresáři [@c:\winnt@]. Pokud se tento soubor nevyskytuje na jednom z těchto míst, existují další, kde jej Java hledá – viz dokumentace v JAAS.

Eventuelně (stalo se nám s Javou 6 která se neuměla domluvit s kerberem na použitém šifrování - výjimka [@BadEncryptionType@]) je možné cestu k tomuto souboru nastavit pomocí parametru:
[@-Djava.security.krb5.conf=CESTA_K_SOUBORU_KRB5.CONF@]
Tento soubor se při instalaci nakopíruje do adresáře [@Kerberos_Configuration@] v instalačním adresáři Tomcatu (stejně jako Login Configuration File).

'''[+7.+] '''Spusťte Tomcat.

'''[+8.+] '''Instalace welcome modulu do [=OpenCms=]

* přihlášení na back-end (workplace), přejít do Admin view
* naimportovat modul [@org.opencms.welcome_4.2.5.zip@]
* zpět do Explorer view, jít do [@system/modules/org.opencms.welcome/elements/@]
* v [@login_element.jsp@] upravit odkaz na [@login_module_secure.jsp@] ve formuláři a javascriptu, viz. řádky s TODO komentářem
* upravit url v [@login_element_secure.jsp@] pro přechod na zabezpečené url (na sebe sama při nezabezpečeném přístupu), viz. TODO komentář

'''[+9.+] '''Restartujte Tomcat.

'''[+10.+] '''Funkce by měly být k dispozici.

'''[+11.+] '''Pokud se objevuje stále starý modul (tzn. na nezabezpečené stránce je formulář pro přihlašovací údaje), je třeba vymazat adresář [@org.opencms.welcome@] v [@<opencmsroot>/WEB-INF/jsp/online/system/modules/@]

'''[+12.+] '''Restartujte Tomcat.

!!! Používání modulu

Doporučení: Všechny front-end edit stránky přes HTTPS protože v tom případě se validují i POST požadavky.

Jak získat v mé šabloně "zabezpečenou" login screen: úplně stejně jako v [@org.opencms.welcome.template.*.jsp@] - náš modul si vše zařídí sám


Archív s instalačními soubory:\\
[[Attach:JarInstallFile_complete.zip|kompletní řešení]]