Repository: cxf Updated Branches: refs/heads/3.0.x-fixes 0e140596b -> cb0d7506c
[CXF-6748]the qop,nc,algorithm parameter in http auth header must not be enclosed between doble quotation (cherry picked from commit bf4f4c89b61640faa41dbac68cf591cb923eb144) (cherry picked from commit b0035ade0042160b77b4848939f58efe9a77d6c7) Conflicts: rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/HttpAuthHeader.java Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/cb0d7506 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/cb0d7506 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/cb0d7506 Branch: refs/heads/3.0.x-fixes Commit: cb0d7506c1fe3a59fa513ffb02f9551a0e6aa69e Parents: 0e14059 Author: Freeman Fang <freeman.f...@gmail.com> Authored: Thu Jan 14 17:23:43 2016 +0800 Committer: Freeman Fang <freeman.f...@gmail.com> Committed: Fri Jan 15 11:35:22 2016 +0800 ---------------------------------------------------------------------- .../cxf/transport/http/auth/HttpAuthHeader.java | 26 +++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/cb0d7506/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/HttpAuthHeader.java ---------------------------------------------------------------------- diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/HttpAuthHeader.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/HttpAuthHeader.java index 5b32dbf..eee12dc 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/HttpAuthHeader.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/HttpAuthHeader.java @@ -84,7 +84,13 @@ public final class HttpAuthHeader { if (!first) { builder.append(", "); } - builder.append(key + "=\"" + param + "\""); + if ("nc".equals(key) + || "qop".equals(key) + || "algorithm".equals(key)) { + builder.append(key + "=" + param + ""); + } else { + builder.append(key + "=\"" + param + "\""); + } first = false; } } @@ -99,14 +105,28 @@ public final class HttpAuthHeader { tok.quoteChar('\''); tok.whitespaceChars('=', '='); tok.whitespaceChars(',', ','); - + while (tok.nextToken() != StreamTokenizer.TT_EOF) { String key = tok.sval; if (tok.nextToken() == StreamTokenizer.TT_EOF) { map.put(key, null); return map; } - String value = tok.sval; + String value = null; + if ("nc".equals(key)) { + //nc is a 8 length HEX number so need get it as number + value = String.valueOf(tok.nval); + if (value.indexOf(".") > 0) { + value = value.substring(0, value.indexOf(".")); + } + String pad = ""; + for (int i = 0; i < 8 - value.length(); i++) { + pad = pad + "0"; + } + value = pad + value; + } else { + value = tok.sval; + } map.put(key, value); } } catch (IOException ex) {