WebKiv: ModulLogin |
from Wiki KIVu |
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.
Platí pro nasazení Apache + Tomcat, kde:
request.isSecure() je vždy false
Podrobnosti viz ZabezpecenePrihlaseni (Jednoduché řešení).
<opencmsroot>/WEB-INF/lib adresáře se přidá kerberos-authentication.jar (J.Boháč BP 2007) TBD .jar ke stažení
login_element_secure.jsp resp. frontendové stránky, do které je vkládán
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: login fomuláře.
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";).
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:
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čkaval-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
org.opencms.welcome_4.2.5.zip
system/modules/org.opencms.welcome/elements/
login_element.jsp upravit odkaz na login_module_secure.jsp ve formuláři a javascriptu, viz. řádky s TODO komentářem
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.
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:
kompletní řešení
Patří do KategorieModulyWebuKiv