SEC-1535: Added suggested doc fixes.

This commit is contained in:
Luke Taylor 2010-08-11 14:25:39 +01:00
parent 2222a7be07
commit 4935aa07c7
8 changed files with 35 additions and 49 deletions

View File

@ -519,7 +519,7 @@ token-repository-ref =
## Reference to a PersistentTokenRepository bean for use with the persistent token remember-me implementation. ## Reference to a PersistentTokenRepository bean for use with the persistent token remember-me implementation.
attribute token-repository-ref {xsd:token} attribute token-repository-ref {xsd:token}
remember-me-services-ref = remember-me-services-ref =
## Allows a custom implementation of RememberMeServices to be used. Note that this implementation should return RememberMeAuthenticationToken instances with the same "key" value as specified in the remember-me element. Alternatively it should register its own AuthenticationProvider. ## Allows a custom implementation of RememberMeServices to be used. Note that this implementation should return RememberMeAuthenticationToken instances with the same "key" value as specified in the remember-me element. Alternatively it should register its own AuthenticationProvider. It should also implement the LogoutHandler interface, which will be invoked when a user logs out. Typically the remember-me cookie would be removed on logout.
attribute services-ref {xsd:token}? attribute services-ref {xsd:token}?
remember-me-data-source-ref = remember-me-data-source-ref =
## DataSource bean for the database that contains the token repository schema. ## DataSource bean for the database that contains the token repository schema.

View File

@ -15,7 +15,7 @@
explaining their purpose. The namespace is written in <link explaining their purpose. The namespace is written in <link
xlink:href="http://www.relaxng.org/">RELAX NG</link> Compact format and later converted into xlink:href="http://www.relaxng.org/">RELAX NG</link> Compact format and later converted into
an XSD schema. If you are familiar with this format, you may wish to examine the <link an XSD schema. If you are familiar with this format, you may wish to examine the <link
xlink:href="https://src.springsource.org/svn/spring-security/trunk/config/src/main/resources/org/springframework/security/config/spring-security-3.0.rnc" xlink:href="https://fisheye.springsource.org/browse/spring-security/config/src/main/resources/org/springframework/security/config/spring-security-3.1.rnc"
>schema file</link> directly.</para> >schema file</link> directly.</para>
<section xml:id="nsa-http"> <section xml:id="nsa-http">
<title>Web Application Security - the <literal>&lt;http&gt;</literal> Element</title> <title>Web Application Security - the <literal>&lt;http&gt;</literal> Element</title>
@ -235,7 +235,7 @@
filter stack and an <classname>LoginUrlAuthenticationEntryPoint</classname> to the filter stack and an <classname>LoginUrlAuthenticationEntryPoint</classname> to the
application context to provide authentication on demand. This will always take application context to provide authentication on demand. This will always take
precedence over other namespace-created entry points. If no attributes are supplied, precedence over other namespace-created entry points. If no attributes are supplied,
a login page will be generated automatically at the URL "/spring-security-login" <footnote> a login page will be generated automatically at the URL "/spring_security_login" <footnote>
<para>This feature is really just provided for convenience and is not intended for <para>This feature is really just provided for convenience and is not intended for
production (where a view technology will have been chosen and can be used to production (where a view technology will have been chosen and can be used to
render a customized login page). The class render a customized login page). The class
@ -248,7 +248,7 @@
<para> The URL that should be used to render the login page. Maps to the <para> The URL that should be used to render the login page. Maps to the
<literal>loginFormUrl</literal> property of the <literal>loginFormUrl</literal> property of the
<classname>LoginUrlAuthenticationEntryPoint</classname>. Defaults to <classname>LoginUrlAuthenticationEntryPoint</classname>. Defaults to
"/spring-security-login". </para> "/spring_security_login". </para>
</section> </section>
<section> <section>
<title><literal>login-processing-url</literal></title> <title><literal>login-processing-url</literal></title>
@ -322,18 +322,13 @@
will be used and configured with a will be used and configured with a
<classname>JdbcTokenRepositoryImpl</classname> instance. </para> <classname>JdbcTokenRepositoryImpl</classname> instance. </para>
</section> </section>
<section>
<title><literal>token-repository-ref</literal></title>
<para> Configures a <classname>PersistentTokenBasedRememberMeServices</classname>
but allows the use of a custom
<interfacename>PersistentTokenRepository</interfacename> bean. </para>
</section>
<section> <section>
<title><literal>services-ref</literal></title> <title><literal>services-ref</literal></title>
<para> Allows complete control of the <para> Allows complete control of the
<interfacename>RememberMeServices</interfacename> implementation that will be <interfacename>RememberMeServices</interfacename> implementation that will be
used by the filter. The value should be the Id of a bean in the application used by the filter. The value should be the <literal>id</literal> of a bean in the application
context which implements this interface. </para> context which implements this interface. Should also implement
<interfacename>LogoutHandler</interfacename> if a logout filter is in use.</para>
</section> </section>
<section> <section>
<title><literal>token-repository-ref</literal></title> <title><literal>token-repository-ref</literal></title>
@ -365,7 +360,7 @@
<interfacename>UserDetailsService</interfacename>, so there has to be one <interfacename>UserDetailsService</interfacename>, so there has to be one
defined in the application context. If there is only one, it will be selected defined in the application context. If there is only one, it will be selected
and used automatically by the namespace configuration. If there are multiple and used automatically by the namespace configuration. If there are multiple
instances, you can specify a bean Id explicitly using this attribute. </para> instances, you can specify a bean <literal>id</literal> explicitly using this attribute. </para>
</section> </section>
</section> </section>
<section xml:id="nsa-session-mgmt"> <section xml:id="nsa-session-mgmt">
@ -468,7 +463,7 @@
<classname>OpenIDAuthenticationFilter</classname> and <classname>OpenIDAuthenticationFilter</classname> and
<classname>OpenIDAuthenticationProvider</classname> will be registered. The latter <classname>OpenIDAuthenticationProvider</classname> will be registered. The latter
requires a reference to a <interfacename>UserDetailsService</interfacename>. Again, requires a reference to a <interfacename>UserDetailsService</interfacename>. Again,
this can be specified by Id, using the <literal>user-service-ref</literal> this can be specified by <literal>id</literal>, using the <literal>user-service-ref</literal>
attribute, or will be located automatically in the application context. </para> attribute, or will be located automatically in the application context. </para>
<section> <section>
<title>The <literal>&lt;attribute-exchange></literal> Element</title> <title>The <literal>&lt;attribute-exchange></literal> Element</title>
@ -666,7 +661,7 @@
<para> If you only have one server defined in your application context, the other <para> If you only have one server defined in your application context, the other
LDAP namespace-defined beans will use it automatically. Otherwise, you can give LDAP namespace-defined beans will use it automatically. Otherwise, you can give
the element an "id" attribute and refer to it from other namespace beans using the element an "id" attribute and refer to it from other namespace beans using
the <literal>server-ref</literal> attribute. This is actually the bean Id of the the <literal>server-ref</literal> attribute. This is actually the bean <literal>id</literal> of the
<literal>ContextSource</literal> instance, if you want to use it in other <literal>ContextSource</literal> instance, if you want to use it in other
traditional Spring beans. </para> traditional Spring beans. </para>
</section> </section>

View File

@ -136,7 +136,7 @@
</section> </section>
<section xml:id="access-denied-handler"> <section xml:id="access-denied-handler">
<title><interfacename>AccessDeniedHandler</interfacename></title> <title><interfacename>AccessDeniedHandler</interfacename></title>
<para>What happens if a user is already authenticated an they try to access a protected <para>What happens if a user is already authenticated and they try to access a protected
resource? In normal usage, this shouldn't happen because the application workflow resource? In normal usage, this shouldn't happen because the application workflow
should be restricted to operations to which a user has access. For example, an HTML should be restricted to operations to which a user has access. For example, an HTML
link to an administration page might be hidden from users who do not have an admin link to an administration page might be hidden from users who do not have an admin
@ -174,7 +174,7 @@
to save the current request before invoking the <interfacename>AuthenticationEntryPoint</interfacename>. to save the current request before invoking the <interfacename>AuthenticationEntryPoint</interfacename>.
This allows the request to be restored after the use has authenticated (see previous overview This allows the request to be restored after the use has authenticated (see previous overview
of <link xlink:href="#tech-intro-web-authentication">web authentication</link>). of <link xlink:href="#tech-intro-web-authentication">web authentication</link>).
A typical example would be where the user logs in with a from, and is then redirected to the A typical example would be where the user logs in with a form, and is then redirected to the
original URL by the default <classname>SavedRequestAwareAuthenticationSuccessHandler</classname> original URL by the default <classname>SavedRequestAwareAuthenticationSuccessHandler</classname>
(see <link xlink:href="#form-login-flow-handling">below</link>). (see <link xlink:href="#form-login-flow-handling">below</link>).
</para> </para>

View File

@ -38,13 +38,13 @@
technologies:</para> technologies:</para>
<itemizedlist spacing="compact"> <itemizedlist spacing="compact">
<listitem> <listitem>
<para>HTTP BASIC authentication headers (an IEFT RFC-based standard)</para> <para>HTTP BASIC authentication headers (an IETF RFC-based standard)</para>
</listitem> </listitem>
<listitem> <listitem>
<para>HTTP Digest authentication headers (an IEFT RFC-based standard)</para> <para>HTTP Digest authentication headers (an IETF RFC-based standard)</para>
</listitem> </listitem>
<listitem> <listitem>
<para>HTTP X.509 client certificate exchange (an IEFT RFC-based standard)</para> <para>HTTP X.509 client certificate exchange (an IETF RFC-based standard)</para>
</listitem> </listitem>
<listitem> <listitem>
<para>LDAP (a very common approach to cross-platform authentication needs, <para>LDAP (a very common approach to cross-platform authentication needs,
@ -62,7 +62,7 @@
</listitem> </listitem>
<listitem> <listitem>
<para>JA-SIG Central Authentication Service (otherwise known as CAS, which is a <para>JA-SIG Central Authentication Service (otherwise known as CAS, which is a
popular open source single sign on system)</para> popular open source single sign-on system)</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Transparent authentication context propagation for Remote Method Invocation <para>Transparent authentication context propagation for Remote Method Invocation
@ -73,7 +73,7 @@
re-authentication for a predetermined period of time)</para> re-authentication for a predetermined period of time)</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Anonymous authentication (allowing every call to automatically assume a <para>Anonymous authentication (allowing every unauthenticated call to automatically assume a
particular security identity)</para> particular security identity)</para>
</listitem> </listitem>
<listitem> <listitem>
@ -133,9 +133,8 @@
<para>Your own authentication systems (see below)</para> <para>Your own authentication systems (see below)</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<para>(* Denotes provided by a third party; check our <link <para>(* Denotes provided by a third party</para>
xlink:href="http://acegisecurity.org/powering.html">integration page</link> for links to <!-- TODO: Reinstate web link to third-party integrations/users -->
the latest details)</para>
<para>Many independent software vendors (ISVs) adopt Spring Security because of this <para>Many independent software vendors (ISVs) adopt Spring Security because of this
significant choice of flexible authentication models. Doing so allows them to quickly significant choice of flexible authentication models. Doing so allows them to quickly
integrate their solutions with whatever their end clients need, without undertaking a integrate their solutions with whatever their end clients need, without undertaking a
@ -145,17 +144,9 @@
Spring Security need to integrate with "legacy" systems that don't follow any particular Spring Security need to integrate with "legacy" systems that don't follow any particular
security standards, and Spring Security is happy to "play nicely" with such security standards, and Spring Security is happy to "play nicely" with such
systems.</para> systems.</para>
<para>Sometimes the mere process of authentication isn't enough. Sometimes you need to also <para>Irrespective of the authentication mechanism, Spring Security provides a deep set
differentiate security based on the way a principal is interacting with your of authorization capabilities. There are three main areas of interest
application. For example, you might want to ensure requests only arrive over HTTPS, in - authorizing web requests, authorizing whether methods can be
order to protect passwords from eavesdropping or end users from man-in-the-middle
attacks. This is especially helpful to protect password recovery processes from brute
force attacks, or simply to make it harder for people to duplicate your application's
key content. To help you achieve these goals, Spring Security fully supports automatic
"channel security", together with JCaptcha integration for human user detection.</para>
<para>Irrespective of how authentication was undertaken, Spring Security provides a deep set
of authorization capabilities. There are three main areas of interest in respect of
authorization, these being authorizing web requests, authorizing whether methods can be
invoked, and authorizing access to individual domain object instances. To help you invoked, and authorizing access to individual domain object instances. To help you
understand the differences, consider the authorization capabilities found in the Servlet understand the differences, consider the authorization capabilities found in the Servlet
Specification web pattern security, EJB Container Managed Security and file system Specification web pattern security, EJB Container Managed Security and file system
@ -300,13 +291,13 @@
line that's causing the problem and work out what's happening. The source is the line that's causing the problem and work out what's happening. The source is the
ultimate documentation for a project and often the simplest place to find out how ultimate documentation for a project and often the simplest place to find out how
something actually works. </para> something actually works. </para>
<para>To obtain the source for the project trunk, use the following git command: <para>To obtain the source for the project, use the following git command:
<programlisting> <programlisting>
git clone git://git.springsource.org/spring-security/spring-security.git git clone git://git.springsource.org/spring-security/spring-security.git
</programlisting> </programlisting>
You can checkout specific versions from
<literal>https://src.springframework.org/svn/spring-security/tags/</literal>.
</para> </para>
<para>This will give you access to the entire project history (including all releases
and branches) on your local machine.</para>
</section> </section>
</section> </section>
</chapter> </chapter>

View File

@ -100,7 +100,7 @@ JAASTest {
Spring Security, on the other hand, works with Spring Security, on the other hand, works with
<interfacename>Authentication</interfacename> objects. Each <interfacename>Authentication</interfacename> objects. Each
<interfacename>Authentication</interfacename> object contains a single principal, <interfacename>Authentication</interfacename> object contains a single principal,
and multiple <interfacename>GrantedAuthority</interfacename>[]s. To facilitate and multiple <interfacename>GrantedAuthority</interfacename>s. To facilitate
mapping between these different concepts, Spring Security's JAAS package includes an mapping between these different concepts, Spring Security's JAAS package includes an
<literal>AuthorityGranter</literal> interface.</para> <literal>AuthorityGranter</literal> interface.</para>

View File

@ -37,9 +37,9 @@
xmlns:security="http://www.springframework.org/schema/security" xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd"> http://www.springframework.org/schema/security/spring-security-3.1.xsd">
... ...
</beans> </beans>
]]></programlisting> In many of the examples you will see (and in the sample) applications, we ]]></programlisting> In many of the examples you will see (and in the sample) applications, we
@ -52,9 +52,9 @@
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd"> http://www.springframework.org/schema/security/spring-security-3.1.xsd">
... ...
</beans:beans> </beans:beans>
]]></programlisting> We'll assume this syntax is being used from now on in this chapter. </para> ]]></programlisting> We'll assume this syntax is being used from now on in this chapter. </para>
@ -888,7 +888,7 @@ List&lt;OpenIDAttribute> attributes = token.getAttributes();</programlisting>The
set an alternative for both method and web security. </para> set an alternative for both method and web security. </para>
<para> For method security, you do this by setting the <para> For method security, you do this by setting the
<literal>access-decision-manager-ref</literal> attribute on <literal>access-decision-manager-ref</literal> attribute on
<literal>global-method-security</literal> to the Id of the appropriate <literal>global-method-security</literal> to the <literal>id</literal> of the appropriate
<interfacename>AccessDecisionManager</interfacename> bean in the application <interfacename>AccessDecisionManager</interfacename> bean in the application
context: <programlisting language="xml"><![CDATA[ context: <programlisting language="xml"><![CDATA[
<global-method-security access-decision-manager-ref="myAccessDecisionManagerBean"> <global-method-security access-decision-manager-ref="myAccessDecisionManagerBean">

View File

@ -125,7 +125,7 @@
<literal>TokenBasedRememberMeServices</literal> requires A UserDetailsService from <literal>TokenBasedRememberMeServices</literal> requires A UserDetailsService from
which it can retrieve the username and password for signature comparison purposes, which it can retrieve the username and password for signature comparison purposes,
and generate the <literal>RememberMeAuthenticationToken</literal> to contain the and generate the <literal>RememberMeAuthenticationToken</literal> to contain the
correct <interfacename>GrantedAuthority</interfacename>[]s. Some sort of logout correct <interfacename>GrantedAuthority</interfacename>s. Some sort of logout
command should be provided by the application that invalidates the cookie if the command should be provided by the application that invalidates the cookie if the
user requests this. <classname>TokenBasedRememberMeServices</classname> also user requests this. <classname>TokenBasedRememberMeServices</classname> also
implements Spring Security's <interfacename>LogoutHandler</interfacename> interface implements Spring Security's <interfacename>LogoutHandler</interfacename> interface

View File

@ -8,9 +8,9 @@
distribution zip file. You can either build the others yourself, or you can obtain the war distribution zip file. You can either build the others yourself, or you can obtain the war
files individually from the central Maven repository. We'd recommend the former. You can get files individually from the central Maven repository. We'd recommend the former. You can get
the source as described in <link xlink:href="#get-source">the introduction</link> and it's the source as described in <link xlink:href="#get-source">the introduction</link> and it's
easy to build the project using Maven. There is more information on the project web site at easy to build the project yourself. There's more information on the project web site at
<link xlink:href="http://www.springsource.org/security/"> <link xlink:href="http://www.springsource.org/security/">
http://www.springsource.org/security/ </link> if you need it. All paths referred to in this http://www.springsource.org/security/ </link>. All paths referred to in this
chapter are relative to the project source directory. </para> chapter are relative to the project source directory. </para>
<section xml:id="tutorial-sample"> <section xml:id="tutorial-sample">
<title>Tutorial Sample</title> <title>Tutorial Sample</title>
@ -35,7 +35,7 @@
administer a simple database of contacts (the domain objects).</para> administer a simple database of contacts (the domain objects).</para>
<para>To deploy, simply copy the WAR file from Spring Security distribution into your <para>To deploy, simply copy the WAR file from Spring Security distribution into your
containers <literal>webapps</literal> directory. The war should be called containers <literal>webapps</literal> directory. The war should be called
<filename>spring-security-samples-contacts-3.0.x.war</filename> (the appended version <filename>spring-security-samples-contacts-3.1.x.war</filename> (the appended version
number will vary depending on what release you are using). </para> number will vary depending on what release you are using). </para>
<para>After starting your container, check the application can load. Visit <para>After starting your container, check the application can load. Visit
<literal>http://localhost:8080/contacts</literal> (or whichever URL is appropriate for <literal>http://localhost:8080/contacts</literal> (or whichever URL is appropriate for