19 lutego 2009

Podział konfiguracji springowej i automatyczny formularz logowania w Spring Security

Ostatnimi czasy zajmowałem się niezwykle interesującym tematem wykorzystania JA-SIG Central Authentication Service (CAS) oraz LDAP w ramach aplikacji webowej i natychmiast wskazałem na Spring Security jako platformę integracyjną. CAS dostarczał mechanizmu pojedyńczego uwierzytelnienia (ang. SSO - Single Sign-On), a LDAP informacji o użytkownikach i ich rolach (autoryzacja). O całym przedsięwzięciu później, ale teraz jedynie wspomnę, że podczas konfiguracji Spring Security (co w zasadzie dotyczy jakiegokolwiek projektu korzystającego ze Spring Framework) natrafiłem na ciekawą cechę konfiguracyjną - podział pliku applicationContext na oddzielne pliki, które w całości stanowią konfigurację springową aplikacji (patrz 15.2. Common configuration). Wystarczy zatem umieścić pewne części konfiguracji w oddzielnych plikach i można uprościć jej zarządzanie - w pliku WEB-INF/web.xml aplikacji webowej wystarczy użyć wyrażenia regularnego /WEB-INF/applicationContext*.xml, aby wskazać na nie wszystkie.
 <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
Spring Framework zadba o ich połączenie i w ten sposób pozbywamy się choć części trudności w obsłudze tego xmlowego szaleństwa w Springu.

Kolejną ciekawostką, tym razem bezpośrednio związaną ze Spring Security, które przypomina mi Grails, jest automatyczne tworzenie formularza logowania (strony do podawania loginu i hasła). Wystarczy wdrożyć minimalną konfigurację Spring Security w naszej aplikacji webowej (patrz 2.2. Getting Started with Security Namespace Configuration), w której możemy skorzystać z 2.2.2.2. Form and Basic Login Options:

You might be wondering where the login form came from when you were prompted to log in, since we made no mention of any HTML files or JSPs. In fact, since we didn't explicitly set a URL for the login page, Spring Security generates one automatically, based on the features that are enabled and using standard values for the URL which processes the submitted login, the default target URL the user will be sent to and so on.

Podkreślam "Spring Security generates one automatically". Idealne na szybki start! I faktycznie działa!