<para><emphasis>Web request security:</emphasis> The servlet specification provides an approach to secure your request URIs. However, these URIs can only be expressed in the servlet specification's own limited URI path format. Spring Security provides a far more comprehensive approach. For instance, you
can use Ant paths or regular expressions, you can consider parts
of the URI other than simply the requested page (eg you can
consider HTTP GET parameters), and you can implement your own
of the URI other than simply the requested page (e.g. you can
consider HTTP GET parameters) and you can implement your own
runtime source of configuration data. This means your web
request security can be dynamically changed during the actual
execution of your webapp.</para>
@ -43,7 +43,8 @@
@@ -43,7 +43,8 @@
developers either ignore these requirements, or implement
security logic within their MVC controller code (or even worse,
inside the views). There are serious disadvantages with this
approach: <orderedlist>
approach:
<orderedlist>
<listitem>
<para><emphasis>Separation of concerns:</emphasis>
Authorization is a crosscutting concern and should
@ -112,10 +113,39 @@
@@ -112,10 +113,39 @@
<para> Spring Security 2.0.x requires a minimum JDK version of 1.4 and is built
against Spring 2.0.x. It should also be compatible with applications using
Spring 2.5.x. </para>
<para> Spring Security 3.0 will require JDK 1.5 as a minimum and will also
<para> Spring Security 3.0 requires JDK 1.5 as a minimum and will also
require Spring 3.0. </para>
</answer>
</qandaentry></qandadiv>
</qandaentry>
<qandaentry>
<question>
<para>
I'm new to Spring Security and I need to build an application that supports CAS single sign-on over HTTPS,
while allowing Basic authentication locally for certain URLs, authenticating against multiple back end user information sources
(LDAP and JDBC). I've copied some configuration files I found but it doesn't work. What could be wrong?
</para>
<para>Or subsititute an alternative complex scenario...</para>
</question>
<answer>
<para>
Realistically, you need an understanding of the technolgies you are intending to use before you can successfully
build applications with them. Security is complicated. Setting up a simple configuration using a login
form and some hard-coded users using Spring Security's namespace is reasonably straightforward. Moving to using a
backed JDBC database is also easy enough. But if you try and jump
straight to a complicated deployment scenario like this you will almost certainly be frustrated.
There is a big jump in the learning curve required to set up systems like CAS, configure LDAP servers and install SSL
certificates properly. So you need to take things one step at a time.
</para>
<para>
From a Spring Security perspective, the first thing you should do is follow the <quote>Getting Started</quote>
guide on the web site. This will take you through a series of steps to get up and running and get some idea of
how the framework operates. If you are using other technologies which you aren't familiar with then you should
do some research and try to make sure you can use them in isolation before combining them in a complex system.
</para>
</answer>
</qandaentry>
</qandadiv>
<qandadiv>
<title>Common Problems</title>
<qandaentryxml:id="faq-login-loop">
@ -181,7 +211,8 @@
@@ -181,7 +211,8 @@
<answer>
<para> This happens because Tomcat sessions created under HTTPS cannot
subsequently be used under HTTP and any session state is lost (including the
security context information). Starting in HTTP first should work. </para>
security context information). Starting a session in HTTP first should work as the
session cookie won't be marked as secure. </para>
</answer>
</qandaentry>
<qandaentryxml:id="faq-no-security-on-forward">
@ -208,17 +239,40 @@
@@ -208,17 +239,40 @@
essential to make sure that the Spring Security session registry is notified
when a session is destroyed. Without it, the session information will not be