Hlavní menu

Nástroje

WebKiv / ModulLogin

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

Updated 15 December 2011, 14:53 by PremekBrada

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 (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)
  • 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: 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:
kompletní řešení


Patří do KategorieModulyWebuKiv