[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski updated HTTPCLIENT-901:
-----------------------------------------

    Fix Version/s: 4.1 Alpha2

Sebastiaan,

Are you working on this issue, or shall I take over?

Oleg

> Add a ContextAwareAuthScheme that has access to the HttpContext in the 
> authenticate method
> ------------------------------------------------------------------------------------------
>
>                 Key: HTTPCLIENT-901
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-901
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>          Components: HttpAuth
>    Affects Versions: 4.1 Alpha1
>            Reporter: Sebastiaan van Erk
>             Fix For: 4.1 Alpha2
>
>
> The interface to be added would be:
> /**
>  * This interface represents an extended  authentication scheme
>  * that requires access to {...@link HttpContext} in order to
>  * generate an authorization string.
>  *
>  * @since 4.1
>  */
> public interface ContextAwareAuthScheme extends AuthScheme {
>     /**
>      * Produces an authorization string for the given set of
>      * {...@link Credentials}.
>      *
>      * @param credentials The set of credentials to be used for athentication
>      * @param request The request being authenticated
>      * @param context HTTP context
>      * @throws AuthenticationException if authorization string cannot
>      *   be generated due to an authentication failure
>      *
>      * @return the authorization string
>      */
>     Header authenticate(
>             Credentials credentials,
>             HttpRequest request,
>             HttpContext context) throws AuthenticationException;
> }
> Binary compatibility can be maintained by doing an instanceof check at the 
> location where AuthScheme.authenticate() is called at the moment, and calling 
> the context aware version if available.
> This interface is necessary for the NegotiateScheme authentication scheme 
> because the service names for the authentication tickets are based on the 
> hostname of the target host or proxy host, depending on whether it's normal 
> or proxy authentication, and this information is only available from the 
> HttpContext.
> Without the HttpContext there is a workaround that works most of the time, 
> which looks like this:
>       String host;
>       if (isProxy()) {
>               // FIXME this should actually taken from the HttpContext.
>               HttpHost proxy = 
> ConnRouteParams.getDefaultProxy(request.getParams());
>               host = proxy.getHostName();
>       } else {
>               host = request.getLastHeader("Host").getValue();
>       }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to