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