Skip to content

Commit 2ca834b

Browse files
committed
Merge pull request AsyncHttpClient#34 from haed/ahc-1.6.x
Ahc 1.6.x
2 parents cb7381a + 8db5ea0 commit 2ca834b

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/main/java/com/ning/http/client/Realm.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public class Realm {
3737
private final String nonce;
3838
private final String algorithm;
3939
private final String response;
40+
private final String opaque;
4041
private final String qop;
4142
private final String nc;
4243
private final String cnonce;
@@ -71,7 +72,8 @@ private Realm(AuthScheme scheme,
7172
String uri,
7273
String method,
7374
boolean usePreemptiveAuth,
74-
String domain, String enc, String host, boolean messageType2Received) {
75+
String domain, String enc, String host, boolean messageType2Received,
76+
String opaque) {
7577

7678
this.principal = principal;
7779
this.password = password;
@@ -80,6 +82,7 @@ private Realm(AuthScheme scheme,
8082
this.nonce = nonce;
8183
this.algorithm = algorithm;
8284
this.response = response;
85+
this.opaque = opaque;
8386
this.qop = qop;
8487
this.nc = nc;
8588
this.cnonce = cnonce;
@@ -124,6 +127,10 @@ public String getAlgorithm() {
124127
public String getResponse() {
125128
return response;
126129
}
130+
131+
public String getOpaque() {
132+
return opaque;
133+
}
127134

128135
public String getQop() {
129136
return qop;
@@ -261,6 +268,7 @@ public static class RealmBuilder {
261268
private String nonce = "";
262269
private String algorithm = "MD5";
263270
private String response = "";
271+
private String opaque = "";
264272
private String qop = "auth";
265273
private String nc = "00000001";
266274
private String cnonce = "";
@@ -364,6 +372,15 @@ public RealmBuilder setResponse(String response) {
364372
this.response = response;
365373
return this;
366374
}
375+
376+
public String getOpaque() {
377+
return this.opaque;
378+
}
379+
380+
public RealmBuilder setOpaque(String opaque) {
381+
this.opaque = opaque;
382+
return this;
383+
}
367384

368385
public String getQop() {
369386
return qop;
@@ -414,6 +431,7 @@ public RealmBuilder parseWWWAuthenticateHeader(String headerLine) {
414431
setRealmName(match(headerLine, "realm"));
415432
setNonce(match(headerLine, "nonce"));
416433
setAlgorithm(match(headerLine, "algorithm"));
434+
setOpaque(match(headerLine, "opaque"));
417435
setQop(match(headerLine, "qop"));
418436
if (getNonce() != null && !getNonce().equalsIgnoreCase("")) {
419437
setScheme(AuthScheme.DIGEST);
@@ -437,6 +455,7 @@ public RealmBuilder clone(Realm clone) {
437455
setPassword(clone.getPassword());
438456
setPrincipal(clone.getPrincipal());
439457
setEnconding(clone.getEncoding());
458+
setOpaque(clone.getOpaque());
440459
setQop(clone.getQop());
441460
setScheme(clone.getScheme());
442461
setUri(clone.getUri());
@@ -580,7 +599,8 @@ public Realm build() {
580599
domain,
581600
enc,
582601
host,
583-
messageType2Received);
602+
messageType2Received,
603+
opaque);
584604
}
585605
}
586606

src/main/java/com/ning/http/client/providers/netty/NettyAsyncHttpProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1114,7 +1114,8 @@ public void messageReceived(final ChannelHandlerContext ctx, MessageEvent e) thr
11141114
.build();
11151115
}
11161116

1117-
final Realm nr = newRealm;
1117+
final Realm nr = new Realm.RealmBuilder().clone(newRealm)
1118+
.setUri(request.getUrl()).build();
11181119

11191120
log.debug("Sending authentication to {}", request.getUrl());
11201121
AsyncCallable ac = new AsyncCallable(future) {

src/main/java/com/ning/http/util/AuthenticatorUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public static String computeDigestAuthentication(Realm realm) throws NoSuchAlgor
4040
builder.append("algorithm").append('=').append(realm.getAlgorithm()).append(", ");
4141

4242
construct(builder, "response", realm.getResponse());
43+
if (realm.getOpaque() != null && realm.getOpaque().isEmpty() == false)
44+
construct(builder, "opaque", realm.getOpaque());
4345
builder.append("qop").append('=').append(realm.getQop()).append(", ");
4446
builder.append("nc").append('=').append(realm.getNc()).append(", ");
4547
construct(builder, "cnonce", realm.getCnonce(), true);

0 commit comments

Comments
 (0)