Comments (11)
Sorry, I don't really have experience nor the means to test proxy authentication. The basic authenticator is quite a straight port of Apache HttpClient. You might want to take a look at https://github.com/apache/httpclient/blob/4.3.x/httpclient/src/main/java/org/apache/http/impl/auth/DigestScheme.java and see if you can make it work.
from okhttp-digest.
I use Squid to test it
from okhttp-digest.
The issue is with HTTPS, the method name is CONNECT instead of the method from the request to the final server. So I changed in DigestAuthenticator.authenticateWithState() :
final String method = request.method();
final String uri = request.url().toString();
getParameters().put("methodname", method);
with
final String method = request.method();
final String uri = request.url().toString();
if(isProxy() && "https".equals(request.url().scheme()))
getParameters().put("methodname", "CONNECT");
else
getParameters().put("methodname", method);
from okhttp-digest.
I am not sure this solution is the correct one. If you check The before mentioned apache HC you see that its sending a different authorization header (Proxy-Authorization
instead of Authorization
).
See https://github.com/apache/httpclient/blob/4.3.x/httpclient/src/main/java/org/apache/http/impl/auth/DigestScheme.java#L396
and https://github.com/apache/httpclient/blob/4.3.x/httpclient/src/main/java/org/apache/http/auth/AUTH.java
The fact that your approach works in your specific case is good but it doesn't make me feel confident that it would work in all situations.
from okhttp-digest.
Yes, you have also to change the authorization header, it's what I tried to describe in my first post in the thread
from okhttp-digest.
I agree, in https://github.com/rburgst/okhttp-digest/blob/master/src/main/java/com/burgstaller/okhttp/digest/DigestAuthenticator.java findDigestHeader(Headers headers) should look for more than just the header WWW-Authenticate. For proxies you should be looking for the header Proxy-Authenticate.
from okhttp-digest.
I checked in a couple of changes that might improve the situation, can someone test if this is enough?
from okhttp-digest.
I faced this issue over HTTP tunnel today from latest master branch code and unfortunately not works.
The root cause is same as @mopsop mentioned for the HTTP method.
Besides, the uri should be host:port
.
Following POC is from my fix (but not for okhttp-digest as authenticateWithState don't pass Route)
if (route.requiresTunnel()) {
method = "CONNECT";
uri = request.url().host() + ':' + request.url().port();
} else {
method = request.method();
uri = request.url().uri().getPath();
}
from okhttp-digest.
Without a setup to test this is very hard for me to fix. @Kudo or @mopsop can you provide a test server + account so I can try? Sample code would obviously help tremendously.
from okhttp-digest.
I have added the route to authenticateWithState
, @Kudo can you give it a try to see whether you can make it work?
from okhttp-digest.
@rburgst Thanks for passing route to authenticateWithState() and it did works after #27 changes.
For test proxy server, please let me email you privately.
from okhttp-digest.
Related Issues (20)
- IncompatibleClassChangeError using digest access authentication and latest OkHttp HOT 4
- Explain how to run ProxyAuthenticationManualTest HOT 4
- java.lang.NoSuchMethodError with okhttp 4.3.0 HOT 1
- Error code 401 HOT 5
- Authentication Cache Concurrent Modification Exception HOT 3
- Still getting 401 after Authentication Challenge HOT 8
- Http proxy with digest auth, error when server sends HTTP-301 redirect HOT 2
- How to use UTF-8 in basic and digest access authentication HOT 7
- Failed to resolve: com.burgstaller:okhttp-digest:1.19 HOT 5
- How to use OkHttp 3.12.x which supports API level 9+ in okhttp-digest HOT 3
- Copyright missing HOT 1
- Jcenter closing in May HOT 5
- Latest 1.x version is not in Maven Central HOT 2
- How can I Set Realm and Client Nonce in ADVANCED of Authorization Digest Auth HOT 3
- Send initial request with authentication header HOT 6
- java.lang.NoSuchFieldError HOT 17
- After putting app idle for some time it gives 401 issue for authorised request HOT 6
- Authentication fails if the site being accessed during proxy setup is HTTPS and digest authentication is used. HOT 4
- Are the `com.burgstaller:okhttp-digest` artifacts hosted on any public repo? HOT 5
- org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is **java.lang.IncompatibleClassChangeError**: Expected static method okhttp3.internal.http.RequestLine.requestPath(Lokhttp3/HttpUrl;)Ljava/lang/String; HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from okhttp-digest.