|
|
|
|
@ -35,7 +35,7 @@
@@ -35,7 +35,7 @@
|
|
|
|
|
<classname>SecurityContext</classname>. </para> |
|
|
|
|
<para> If you are using the namespace, an instance of |
|
|
|
|
<classname>ProviderManager</classname> is created and maintained internally, and |
|
|
|
|
you add providers to it by using the namespace authentication provider elements |
|
|
|
|
you add providers to it by using the namespace authentication provider elements |
|
|
|
|
(see <link xlink:href="#ns-auth-manager">the namespace chapter</link>). In this |
|
|
|
|
case, you should not declare a <classname>ProviderManager</classname> bean in your |
|
|
|
|
application context. However, if you are not using the namespace then you would declare |
|
|
|
|
@ -99,6 +99,28 @@
@@ -99,6 +99,28 @@
|
|
|
|
|
repository. These will be discussed in more detail <link |
|
|
|
|
xlink:href="core-services-password-encodin">below</link>. </para> |
|
|
|
|
</section> |
|
|
|
|
<section xml:id="core-services-erasing-credentials"> |
|
|
|
|
<title>Erasing Credentials on Successful Authentication</title> |
|
|
|
|
<para> |
|
|
|
|
From Spring Security 3.0.3, you can configure the <classname>ProviderManager</classname> |
|
|
|
|
will attempt to clear any sensitive credentials information from the |
|
|
|
|
<interfacename>Authentication</interfacename> object which is returned by a successful |
|
|
|
|
authentication request, to prevent information like passwords being retained longer |
|
|
|
|
than necessary. This feature is controlled by the <literal>eraseCredentialsAfterAuthentication</literal> |
|
|
|
|
property on <classname>ProviderManager</classname>. It is off by default. |
|
|
|
|
See the Javadoc for more information. |
|
|
|
|
</para> |
|
|
|
|
<para> |
|
|
|
|
This may cause issues when you are using a cache of user objects, for example, to |
|
|
|
|
improve performance in a stateless application. If the <interfacename>Authentication</interfacename> |
|
|
|
|
contains a reference to an object in the cache (such as a <interfacename>UserDetails</interfacename> |
|
|
|
|
instance) and this has its credentials removed, then it will no longer be possible to authenticate |
|
|
|
|
against the cached value. You need to take this into account if you are using a cache. An obvious |
|
|
|
|
solution is to make a copy of the object first, either in the cache implementation or in |
|
|
|
|
the <interfacename>AuthenticationProvider</interfacename> which creates the returned |
|
|
|
|
<interfacename>Authentication</interfacename> object. |
|
|
|
|
</para> |
|
|
|
|
</section> |
|
|
|
|
</section> |
|
|
|
|
<section> |
|
|
|
|
<title><interfacename>UserDetailsService</interfacename> Implementations</title> |
|
|
|
|
|