fixed Jwt signature base
parent
a2c5c99b63
commit
ee0ef8d563
|
@ -20,8 +20,12 @@ public class Hmac256Signer extends AbstractJwtSigner {
|
||||||
this(null);
|
this(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Hmac256Signer(byte[] passphrase) {
|
public Hmac256Signer(byte[] passphrase) {
|
||||||
super(HS256);
|
super(HS256);
|
||||||
|
|
||||||
|
//TODO: set up a factory for other signature methods
|
||||||
|
|
||||||
setPassphrase(passphrase);
|
setPassphrase(passphrase);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -103,12 +103,15 @@ public class Jwt {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the canonical encoded string of this JWT
|
* Return the canonical encoded string of this JWT, the header in Base64, a period ".", the claims in Base64, a period ".", and the signature in Base64.
|
||||||
*/
|
*/
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return getSignatureBase() + Strings.nullToEmpty(this.signature);
|
return getSignatureBase() + "." + Strings.nullToEmpty(this.signature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The signature base of a JWT is the header in Base64, a period ".", and the claims in Base64.
|
||||||
|
*/
|
||||||
public String getSignatureBase() {
|
public String getSignatureBase() {
|
||||||
JsonObject h = header.getAsJsonObject();
|
JsonObject h = header.getAsJsonObject();
|
||||||
JsonObject c = claims.getAsJsonObject();
|
JsonObject c = claims.getAsJsonObject();
|
||||||
|
@ -116,7 +119,7 @@ public class Jwt {
|
||||||
String h64 = new String(Base64.encodeBase64URLSafe(h.toString().getBytes()));
|
String h64 = new String(Base64.encodeBase64URLSafe(h.toString().getBytes()));
|
||||||
String c64 = new String(Base64.encodeBase64URLSafe(c.toString().getBytes()));
|
String c64 = new String(Base64.encodeBase64URLSafe(c.toString().getBytes()));
|
||||||
|
|
||||||
return h64 + "." + c64 + ".";
|
return h64 + "." + c64;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -143,6 +146,8 @@ public class Jwt {
|
||||||
// shuttle for return value
|
// shuttle for return value
|
||||||
Jwt jwt = new Jwt(new JwtHeader(hjo), new JwtClaims(cjo), s64);
|
Jwt jwt = new Jwt(new JwtHeader(hjo), new JwtClaims(cjo), s64);
|
||||||
|
|
||||||
|
// TODO: save the wire-encoded string in the Jwt object itself?
|
||||||
|
|
||||||
return jwt;
|
return jwt;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,8 +69,8 @@ public class JwtTest {
|
||||||
* Expected signature: iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E
|
* Expected signature: iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
String signature = "iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E";
|
String signature = "p-63Jzz7mgi3H4hvW6MFB7lmPRZjhsL666MYkmpX33Y";
|
||||||
String expected = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjEzMDA4MTkzODAsImlzcyI6ImpvZSIsImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.iGBPJj47S5q_HAhSoQqAdcS6A_1CFj3zrLaImqNbt9E";
|
String expected = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjEzMDA4MTkzODAsImlzcyI6ImpvZSIsImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ." + signature;
|
||||||
|
|
||||||
String actual = jwt.toString();
|
String actual = jwt.toString();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue