The namespace is designed to capture the most common uses of the framework and provide a simplified and concise
syntax for enabling them within an application. The design is largely based around the large-scale dependencies
within the framework, and can be divided up into the following areas:
<itemizedlist>
<listitem><para><emphasis>Web/HTTP Security</emphasis> - the most complex part. Sets up the filters and
related service beans used to apply the framework authentication mechanisms, to secure URLs, render login and error pages and much more.</para></listitem>
<listitem><para><emphasis>Business Object (Method) Security</emphasis> - options for securing the service layer.</para></listitem>
<listitem><para><emphasis>AuthenticationManager</emphasis> - handles authentication requests from other parts of the framework.</para></listitem>
<listitem><para><emphasis>AccessDecisionManager</emphasis> - provides access decisions for web and method security. A default one will be registered, but you can also
choose to use a custom one, declared using normal Spring bean syntax.</para></listitem>
<listitem><para><emphasis>AuthenticationProvider</emphasis>s - mechanisms against which the authentication manager authenticates users.
The namespace provides supports for several standard options and also a means of adding custom beans declared using a traditional syntax. </para></listitem>
<listitem><para><emphasis>UserDetailsService</emphasis> - closely related to authentication providers, but often also required by other beans.</para></listitem>
<!-- todo: diagram and link to other sections which describe the interfaces -->
This defines two users, their passwords and their roles within the application (which will be used for access control). The
<literal><authentication-provider></literal> element specifies that the user information will be registered with the authentication
manager and used to process authentication requests.
<sidebar><para>If you are familiar with previous versions of the framework, the <literal><authentication-provider></literal>
element creates a <literal>DaoAuthenticationProvider</literal> bean and the <literal><user-service></literal> element creates
an <classname>InMemoryDaoImpl</classname>. A <literal>ProviderManager</literal> bean is always created by the namespace processing system
and the <literal>AuthenticationProvider</literal> is automatically registered with it.</para></sidebar>
</para>
<para>
At this point you should be able to start up your application and you will be required to log in to proceed. Try it out, or try
experimenting with the "tutorial" sample applicaition that comes with the project.
This configuration actually adds quite a few services to the application automatically (mainly because we have added the <literal>auto-config</literal>
attribute. For example, form login processing and "remember-me" services are automatically enabled. You might also be wondering where the
login form came from when you were prompted to log in. This was also generated automatically, since we didn't explicitly configure a login page URL, but the namespace offers plenty
of options to allow you to custmize this kind of thing.