Skip to content

Commit 7bdb5ec

Browse files
committed
Add additional headers to auth implementation
1 parent 1709d6b commit 7bdb5ec

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/main/java/com/twilio/jwt/validation/ValidationToken.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class ValidationToken extends Jwt {
3232
private static final HashFunction HASH_FUNCTION = Hashing.sha256();
3333
private static final String NEW_LINE = "\n";
3434

35+
private final String credentialSid;
3536
private final String method;
3637
private final String uri;
3738
private final String queryString;
@@ -46,6 +47,7 @@ private ValidationToken(Builder b) {
4647
b.credentialSid,
4748
new Date(new Date().getTime() + b.ttl * 1000)
4849
);
50+
this.credentialSid = b.credentialSid;
4951
this.method = b.method;
5052
this.uri = b.uri;
5153
this.queryString = b.queryString;
@@ -56,7 +58,10 @@ private ValidationToken(Builder b) {
5658

5759
@Override
5860
public Map<String, Object> getHeaders() {
59-
return Collections.emptyMap();
61+
Map<String, Object> headers = new HashMap<>();
62+
headers.put("cty", "twilio-pkrv;v=1");
63+
headers.put("kid", this.credentialSid);
64+
return headers;
6065
}
6166

6267
@Override
@@ -65,7 +70,8 @@ public Map<String, Object> getClaims() {
6570

6671
// Sort the signed headers
6772
Collections.sort(signedHeaders);
68-
String includedHeaders = Joiner.on(";").join(signedHeaders);
73+
List<String> lowercaseSignedHeaders = Lists.transform(signedHeaders, LOWERCASE_STRING);
74+
String includedHeaders = Joiner.on(";").join(lowercaseSignedHeaders);
6975
payload.put("hrh", includedHeaders);
7076

7177
// Add the method and uri
@@ -84,7 +90,7 @@ public Map<String, Object> getClaims() {
8490
Map<String, List<String>> combinedHeaders = COMBINE_HEADERS.apply(lowercaseHeaders);
8591

8692
// Add the headers that we care about
87-
for (String header : signedHeaders) {
93+
for (String header : lowercaseSignedHeaders) {
8894
String lowercase = header.toLowerCase().trim();
8995

9096
if (combinedHeaders.containsKey(lowercase)) {
@@ -175,6 +181,13 @@ public Header[] apply(Header[] headers) {
175181
}
176182
};
177183

184+
private static Function<String, String> LOWERCASE_STRING = new Function<String, String>() {
185+
@Override
186+
public String apply(String s) {
187+
return s.toLowerCase();
188+
}
189+
};
190+
178191
public static class Builder {
179192

180193
private String credentialSid;

0 commit comments

Comments
 (0)