mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-11-04 08:39:05 +00:00 
			
		
		
		
	
		
			
	
	
		
			13 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			13 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								[[servlet-authentication-credentialscontainer]]
							 | 
						||
| 
								 | 
							
								= CredentialsContainer
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								{security-api-url}org/springframework/security/core/CredentialsContainer.html[The `CredentialsContainer`] interface indicates that the implementing object contains sensitive data, and is used internally by Spring Security to erase the authentication credentials after a successful authentication.
							 | 
						||
| 
								 | 
							
								This interface is implemented by most of Spring Security internal domain classes, like {security-api-url}org/springframework/security/core/userdetails/User.html[User] and {security-api-url}org/springframework/security/authentication/UsernamePasswordAuthenticationToken.html[UsernamePasswordAuthenticationToken].
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The `ProviderManager` manager checks whether the returned `Authentication` implements this interface.
							 | 
						||
| 
								 | 
							
								If so, xref:servlet/authentication/architecture.adoc#servlet-authentication-providermanager-erasing-credentials[it calls the `eraseCredentials` method] to remove the credentials from the object.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you want your custom authentication objects to have their credentials erased after authentication, you should ensure that the classes implement the `CredentialsContainer` interface.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Users who are writing their own `AuthenticationProvider` implementations should create and return an appropriate `Authentication` object there, minus any sensitive data, rather than using this interface.
							 |