mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-06-03 09:59:45 +00:00
127 lines
5.0 KiB
Java
127 lines
5.0 KiB
Java
/*
|
|
* ====================================================================
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
* ====================================================================
|
|
*
|
|
* This software consists of voluntary contributions made by many
|
|
* individuals on behalf of the Apache Software Foundation. For more
|
|
* information on the Apache Software Foundation, please see
|
|
* <http://www.apache.org/>.
|
|
*
|
|
*/
|
|
|
|
package ch.boye.httpclientandroidlib.client.protocol;
|
|
|
|
import java.util.Queue;
|
|
|
|
import ch.boye.httpclientandroidlib.androidextra.HttpClientAndroidLog;
|
|
/* LogFactory removed by HttpClient for Android script. */
|
|
import ch.boye.httpclientandroidlib.Header;
|
|
import ch.boye.httpclientandroidlib.HttpRequest;
|
|
import ch.boye.httpclientandroidlib.HttpRequestInterceptor;
|
|
import ch.boye.httpclientandroidlib.auth.AuthOption;
|
|
import ch.boye.httpclientandroidlib.auth.AuthScheme;
|
|
import ch.boye.httpclientandroidlib.auth.AuthState;
|
|
import ch.boye.httpclientandroidlib.auth.AuthenticationException;
|
|
import ch.boye.httpclientandroidlib.auth.ContextAwareAuthScheme;
|
|
import ch.boye.httpclientandroidlib.auth.Credentials;
|
|
import ch.boye.httpclientandroidlib.protocol.HttpContext;
|
|
import ch.boye.httpclientandroidlib.util.Asserts;
|
|
|
|
@Deprecated
|
|
abstract class RequestAuthenticationBase implements HttpRequestInterceptor {
|
|
|
|
final HttpClientAndroidLog log = new HttpClientAndroidLog(getClass());
|
|
|
|
public RequestAuthenticationBase() {
|
|
super();
|
|
}
|
|
|
|
void process(
|
|
final AuthState authState,
|
|
final HttpRequest request,
|
|
final HttpContext context) {
|
|
AuthScheme authScheme = authState.getAuthScheme();
|
|
Credentials creds = authState.getCredentials();
|
|
switch (authState.getState()) {
|
|
case FAILURE:
|
|
return;
|
|
case SUCCESS:
|
|
ensureAuthScheme(authScheme);
|
|
if (authScheme.isConnectionBased()) {
|
|
return;
|
|
}
|
|
break;
|
|
case CHALLENGED:
|
|
final Queue<AuthOption> authOptions = authState.getAuthOptions();
|
|
if (authOptions != null) {
|
|
while (!authOptions.isEmpty()) {
|
|
final AuthOption authOption = authOptions.remove();
|
|
authScheme = authOption.getAuthScheme();
|
|
creds = authOption.getCredentials();
|
|
authState.update(authScheme, creds);
|
|
if (this.log.isDebugEnabled()) {
|
|
this.log.debug("Generating response to an authentication challenge using "
|
|
+ authScheme.getSchemeName() + " scheme");
|
|
}
|
|
try {
|
|
final Header header = authenticate(authScheme, creds, request, context);
|
|
request.addHeader(header);
|
|
break;
|
|
} catch (final AuthenticationException ex) {
|
|
if (this.log.isWarnEnabled()) {
|
|
this.log.warn(authScheme + " authentication error: " + ex.getMessage());
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
} else {
|
|
ensureAuthScheme(authScheme);
|
|
}
|
|
}
|
|
if (authScheme != null) {
|
|
try {
|
|
final Header header = authenticate(authScheme, creds, request, context);
|
|
request.addHeader(header);
|
|
} catch (final AuthenticationException ex) {
|
|
if (this.log.isErrorEnabled()) {
|
|
this.log.error(authScheme + " authentication error: " + ex.getMessage());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ensureAuthScheme(final AuthScheme authScheme) {
|
|
Asserts.notNull(authScheme, "Auth scheme");
|
|
}
|
|
|
|
private Header authenticate(
|
|
final AuthScheme authScheme,
|
|
final Credentials creds,
|
|
final HttpRequest request,
|
|
final HttpContext context) throws AuthenticationException {
|
|
Asserts.notNull(authScheme, "Auth scheme");
|
|
if (authScheme instanceof ContextAwareAuthScheme) {
|
|
return ((ContextAwareAuthScheme) authScheme).authenticate(creds, request, context);
|
|
} else {
|
|
return authScheme.authenticate(creds, request);
|
|
}
|
|
}
|
|
|
|
}
|