76 lines
2.7 KiB
Java
76 lines
2.7 KiB
Java
package gov.nist.javax.sip.clientauthutils;
|
|
|
|
import java.text.ParseException;
|
|
import java.util.Collection;
|
|
|
|
import javax.sip.ClientTransaction;
|
|
import javax.sip.InvalidArgumentException;
|
|
import javax.sip.SipException;
|
|
import javax.sip.SipProvider;
|
|
import javax.sip.header.AuthorizationHeader;
|
|
import javax.sip.message.Request;
|
|
import javax.sip.message.Response;
|
|
|
|
/**
|
|
* A helper interface that provides useful functionality for clients that need to authenticate
|
|
* with servers.
|
|
*
|
|
* @author Emil Ivov
|
|
* @author Jeroen van Bemmel
|
|
* @author M. Ranganathan
|
|
*
|
|
* @since 2.0
|
|
*
|
|
*
|
|
*/
|
|
public interface AuthenticationHelper {
|
|
|
|
/**
|
|
* Uses securityAuthority to determinie a set of valid user credentials for
|
|
* the specified Response (Challenge) and appends it to the challenged
|
|
* request so that it could be retransmitted.
|
|
*
|
|
*
|
|
*
|
|
* @param challenge
|
|
* the 401/407 challenge response
|
|
* @param challengedTransaction
|
|
* the transaction established by the challenged request
|
|
* @param transactionCreator
|
|
* the JAIN SipProvider that we should use to create the new
|
|
* transaction.
|
|
* @param cacheTime The amount of time (seconds ) for which the authentication helper
|
|
* will keep a reference to the generated credentials in a cache.
|
|
* If you specify -1, then the authentication credentials are cached
|
|
* until you remove them from the cache. If you choose this option, make sure
|
|
* you remove the cached headers or you will have a memory leak.
|
|
*
|
|
* @return a transaction containing a re-originated request with the
|
|
* necessary authorization header.
|
|
* @throws SipException
|
|
* if we get an exception white creating the new transaction
|
|
* @throws NullPointerException
|
|
* if an argument or a header is null.
|
|
*/
|
|
public abstract ClientTransaction handleChallenge(Response challenge,
|
|
ClientTransaction challengedTransaction,
|
|
SipProvider transactionCreator, int cacheTime ) throws SipException,
|
|
NullPointerException;
|
|
|
|
/**
|
|
* Attach authentication headers to the given request. This looks up
|
|
* the credential cache and picks up any stored authentication headers
|
|
* for the given call ID and attaches it to the request.
|
|
* @param request - the request for which we attach the authentication headers.
|
|
*/
|
|
public abstract void setAuthenticationHeaders(Request request) ;
|
|
|
|
/**
|
|
* Remove cached entry.
|
|
*
|
|
* @param callId -- the call Id for which we want to remove the cached headers.
|
|
*
|
|
*/
|
|
public abstract void removeCachedAuthenticationHeaders(String callId);
|
|
}
|