org.tmatesoft.svn.core.auth
Interface ISVNAuthenticationManager

All Known Subinterfaces:
ISVNAuthenticationManagerExt
All Known Implementing Classes:
BasicAuthenticationManager

public interface ISVNAuthenticationManager

The ISVNAuthenticationManager is implemented by manager classes used by SVNRepository drivers for user authentication purposes.

When an SVNRepository driver is created, you should provide an authentication manager via a call to:

 import org.tmatesoft.svn.core.io.SVNRepository;
 import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
 ...
     SVNRepository repository;
     ISVNAuthenticationManager authManger;
     ...
     
     repository.setAuthenticationManager(authManager);
     ...

SVNKit provides a default authentication manager implementation - org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager. This manager has got the following features:

You may also specify your own auth provider (ISVNAuthenticationProvider) to this default manager, it will be used along with those default ones, that implement the features listed above.

If using the https:// protocol and if no user's authentication provider implementation is set to the default manager, server certificates are accepted temporarily and therefore are not cached on the disk. To enable server CAs caching, a user should set an authentication provider implementation which acceptServerAuthentication() method must return ISVNAuthenticationProvider.ACCEPTED. That will switch on certificate on-the-disk caching.

How to get a default auth manager instance see SVNWCUtil.

Since:
1.2
See Also:
SVNRepository

Field Summary
static java.lang.String PASSWORD
          A simple password credential kind ("svn.simple")
static java.lang.String SSH
          An ssh credential kind ("svn.ssh")
static java.lang.String SSL
          An ssl credential kind ("svn.ssl.client-passphrase")
static java.lang.String USERNAME
          A simple username credential kind ("svn.username").
 
Method Summary
 void acknowledgeAuthentication(boolean accepted, java.lang.String kind, java.lang.String realm, SVNErrorMessage errorMessage, SVNAuthentication authentication)
          Accepts the given authentication if it was successfully accepted by a repository server, or not if authentication failed.
 void acknowledgeTrustManager(javax.net.ssl.TrustManager manager)
          Acknowledges the specified trust manager.
 int getConnectTimeout(SVNRepository repository)
          Returns the connection timeout value in milliseconds which repository should use in network connection operations.
 SVNAuthentication getFirstAuthentication(java.lang.String kind, java.lang.String realm, SVNURL url)
          Retrieves the first user credential.
 SVNAuthentication getNextAuthentication(java.lang.String kind, java.lang.String realm, SVNURL url)
          Retrieves the next user credential if the first try failed.
 ISVNProxyManager getProxyManager(SVNURL url)
          Returns a proxy manager that keeps settings for that proxy server over which HTTP requests are send to a repository server.
 int getReadTimeout(SVNRepository repository)
          Returns the read timeout value in milliseconds which repository should use in socket read operations.
 javax.net.ssl.TrustManager getTrustManager(SVNURL url)
          Returns a manager which handles trust data for the specified url.
 boolean isAuthenticationForced()
          Checks whether client should send authentication credentials to a repository server not waiting for the server's challenge.
 void setAuthenticationProvider(ISVNAuthenticationProvider provider)
          Sets a custom authentication provider that will provide user credentials for authentication.
 

Field Detail

PASSWORD

static final java.lang.String PASSWORD
A simple password credential kind ("svn.simple")

See Also:
Constant Field Values

SSH

static final java.lang.String SSH
An ssh credential kind ("svn.ssh")

See Also:
Constant Field Values

SSL

static final java.lang.String SSL
An ssl credential kind ("svn.ssl.client-passphrase")

See Also:
Constant Field Values

USERNAME

static final java.lang.String USERNAME
A simple username credential kind ("svn.username"). Only usernames are cached/provided matched against an appropriate realms (which are repository UUIDs in this case). In particular this kind is used in file:/// and svn+ssh:// access schemes.

See Also:
Constant Field Values
Method Detail

setAuthenticationProvider

void setAuthenticationProvider(ISVNAuthenticationProvider provider)
Sets a custom authentication provider that will provide user credentials for authentication.

Parameters:
provider - an authentication provider

getProxyManager

ISVNProxyManager getProxyManager(SVNURL url)
                                 throws SVNException
Returns a proxy manager that keeps settings for that proxy server over which HTTP requests are send to a repository server.

A default auth manager uses proxy settings from the standard servers file.

Parameters:
url - a repository location that will be accessed over the proxy server for which a manager is needed
Returns:
a proxy manager
Throws:
SVNException

getTrustManager

javax.net.ssl.TrustManager getTrustManager(SVNURL url)
                                           throws SVNException
Returns a manager which handles trust data for the specified url.

Note: in pre-1.2.0 versions ISVNAuthenticationManager used to provide ISVNSSLManager via a method getSSLManager() which is now replaced by this one. ISVNSSLManager is no longer used (replaced by TrustManager).

Parameters:
url - repository url
Returns:
trust manager
Throws:
SVNException
Since:
1.2.0

getFirstAuthentication

SVNAuthentication getFirstAuthentication(java.lang.String kind,
                                         java.lang.String realm,
                                         SVNURL url)
                                         throws SVNException
Retrieves the first user credential. The scheme of retrieving credentials:

For each credential kind an implementor should return a kind-specific credential. The following table matches kinds to proper credential classes:

Credential Kind Credential Class
PASSWORDSVNPasswordAuthentication
SSHSVNSSHAuthentication
SSLSVNSSLAuthentication
USERNAMESVNUserNameAuthentication

Parameters:
kind - a credential kind
realm - a repository authentication realm
url - a repository location that is to be accessed
Returns:
the first try user credential
Throws:
SVNException

getNextAuthentication

SVNAuthentication getNextAuthentication(java.lang.String kind,
                                        java.lang.String realm,
                                        SVNURL url)
                                        throws SVNException
Retrieves the next user credential if the first try failed. The scheme of retrieving credentials:

For each credential kind an implementor should return a kind-specific credential. The following table matches kinds to proper credential classes:

Credential Kind Credential Class
PASSWORDSVNPasswordAuthentication
SSHSVNSSHAuthentication
SSLSVNSSLAuthentication
USERNAMESVNUserNameAuthentication

Parameters:
kind - a credential kind
realm - a repository authentication realm
url - a repository location that is to be accessed
Returns:
the next try user credential
Throws:
SVNException

acknowledgeAuthentication

void acknowledgeAuthentication(boolean accepted,
                               java.lang.String kind,
                               java.lang.String realm,
                               SVNErrorMessage errorMessage,
                               SVNAuthentication authentication)
                               throws SVNException
Accepts the given authentication if it was successfully accepted by a repository server, or not if authentication failed. As a result the provided credential may be cached (authentication succeeded) or deleted from the cache (authentication failed).

Parameters:
accepted - true if the credential was accepted by the server, otherwise false
kind - a credential kind (PASSWORD or SSH or USERNAME)
realm - a repository authentication realm
errorMessage - the reason of the authentication failure
authentication - a user credential to accept/drop
Throws:
SVNException

acknowledgeTrustManager

void acknowledgeTrustManager(javax.net.ssl.TrustManager manager)
Acknowledges the specified trust manager. This method is called only when a secure connection is successfully established with the specified manager.

Parameters:
manager - trust manager to acknowledge (one returned by getTrustManager(SVNURL))
Since:
1.2.0

isAuthenticationForced

boolean isAuthenticationForced()
Checks whether client should send authentication credentials to a repository server not waiting for the server's challenge.

In some cases it may be necessary to send credentials beforehand, not waiting until the server asks to do it itself. To achieve such behaviour an implementor should return true from this routine.

Returns:
true if authentication credentials are forced to be sent;false when credentials are to be sent only in response to a server challenge

getReadTimeout

int getReadTimeout(SVNRepository repository)
Returns the read timeout value in milliseconds which repository should use in socket read operations. Socket read operations will block only for this amount of time.

Parameters:
repository - a repository access driver
Returns:
connection timeout value
Since:
1.2.0

getConnectTimeout

int getConnectTimeout(SVNRepository repository)
Returns the connection timeout value in milliseconds which repository should use in network connection operations.

Parameters:
repository - repository access object
Returns:
connection timeout value in milliseconds which will be set to a socket
Since:
1.2.0