1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.client5.testing.auth;
29
30 import java.nio.charset.StandardCharsets;
31
32 import org.apache.hc.client5.http.utils.Base64;
33 import org.apache.hc.client5.http.auth.StandardAuthScheme;
34 import org.apache.hc.core5.http.HttpException;
35 import org.apache.hc.core5.http.ProtocolException;
36
37 public class BasicAuthTokenExtractor {
38
39 public String extract(final String challengeResponse) throws HttpException {
40 if (challengeResponse != null) {
41 final int i = challengeResponse.indexOf(' ');
42 if (i == -1) {
43 throw new ProtocolException("Invalid challenge response: " + challengeResponse);
44 }
45 final String schemeName = challengeResponse.substring(0, i);
46 if (schemeName.equalsIgnoreCase(StandardAuthScheme.BASIC)) {
47 final String s = challengeResponse.substring(i + 1).trim();
48 try {
49 final byte[] credsRaw = s.getBytes(StandardCharsets.US_ASCII);
50 final Base64 codec = new Base64();
51 return new String(codec.decode(credsRaw), StandardCharsets.US_ASCII);
52 } catch (final IllegalArgumentException ex) {
53 throw new ProtocolException("Malformed Basic credentials");
54 }
55 }
56 }
57 return null;
58 }
59
60 }