| 
					
				 | 
			
			
				@@ -0,0 +1,40 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package net.sf.acegisecurity.providers.x509; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.UserDetails; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sf.acegisecurity.AuthenticationException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.security.cert.X509Certificate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Populates the <code>UserDetails</code> associated with the X.509 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * certificate presented by a client. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * <p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * Although the certificate will already have been validated by the web container, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * implementations may choose to perform additional application-specific checks on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * the certificate content here. If an implementation chooses to reject the certificate, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * it should throw a {@link net.sf.acegisecurity.BadCredentialsException}. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * </p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author Luke 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public interface X509AuthoritiesPopulator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Obtains the granted authorities for the specified user. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * <p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * May throw any <code>AuthenticationException</code> or return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * <code>null</code> if the authorities are unavailable. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * </p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param userCertificate the X.509 certificate supplied 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return the details of the indicated user (at minimum the granted 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *         authorities and the username) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @throws net.sf.acegisecurity.AuthenticationException if the user details are not available 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *  or the certificate isn't valid for the application's purpose. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public UserDetails getUserDetails(X509Certificate userCertificate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        throws AuthenticationException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |