From febad617309414c85ec30b9932e1767aa83604b2 Mon Sep 17 00:00:00 2001 From: Justin Richer Date: Wed, 4 Jan 2012 10:34:22 -0500 Subject: [PATCH] jwt structures are claims based --- src/main/java/org/mitre/jwt/model/JwtClaims.java | 12 +++++++----- src/main/java/org/mitre/jwt/model/JwtHeader.java | 10 ++++++++-- src/test/java/org/mitre/jwt/JwtTest.java | 4 ++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/mitre/jwt/model/JwtClaims.java b/src/main/java/org/mitre/jwt/model/JwtClaims.java index c98a5a726..a50dc1971 100644 --- a/src/main/java/org/mitre/jwt/model/JwtClaims.java +++ b/src/main/java/org/mitre/jwt/model/JwtClaims.java @@ -50,12 +50,14 @@ public class JwtClaims extends ClaimSet { setJwtId(element.getValue().getAsString()); } else if (element.getKey().equals(TYPE)) { setType(element.getValue().getAsString()); - } else if (element.getValue().isJsonPrimitive()){ - // we handle all primitives in here - JsonPrimitive prim = element.getValue().getAsJsonPrimitive(); - setClaim(element.getKey(), prim); } else { - setClaim(element.getKey(), element.getValue()); + if (element.getValue().isJsonPrimitive()){ + // we handle all primitives in here + JsonPrimitive prim = element.getValue().getAsJsonPrimitive(); + setClaim(element.getKey(), prim); + } else { + setClaim(element.getKey(), element.getValue()); + } } } } diff --git a/src/main/java/org/mitre/jwt/model/JwtHeader.java b/src/main/java/org/mitre/jwt/model/JwtHeader.java index 5c44d9d3f..20a50a27e 100644 --- a/src/main/java/org/mitre/jwt/model/JwtHeader.java +++ b/src/main/java/org/mitre/jwt/model/JwtHeader.java @@ -6,6 +6,7 @@ import java.util.Map.Entry; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; public class JwtHeader extends ClaimSet { @@ -34,8 +35,13 @@ public class JwtHeader extends ClaimSet { } else if (element.getKey().equals(ENCRYPTION_METHOD)) { this.setEncryptionMethod(json.get(ENCRYPTION_METHOD).getAsString()); } else { - // TODO: this assumes string encoding for extensions, probably not quite correct - setClaim(element.getKey(), element.getValue().getAsString()); + if (element.getValue().isJsonPrimitive()){ + // we handle all primitives in here + JsonPrimitive prim = element.getValue().getAsJsonPrimitive(); + setClaim(element.getKey(), prim); + } else { + setClaim(element.getKey(), element.getValue()); + } } } } diff --git a/src/test/java/org/mitre/jwt/JwtTest.java b/src/test/java/org/mitre/jwt/JwtTest.java index e9650e3c8..36aa60c6c 100644 --- a/src/test/java/org/mitre/jwt/JwtTest.java +++ b/src/test/java/org/mitre/jwt/JwtTest.java @@ -21,8 +21,8 @@ public class JwtTest { public void testToStringPlaintext() { Jwt jwt = new Jwt(); jwt.getHeader().setAlgorithm("none"); - jwt.getClaims().setIssuer("joe"); jwt.getClaims().setExpiration(new Date(1300819380L * 1000L)); + jwt.getClaims().setIssuer("joe"); jwt.getClaims().setClaim("http://example.com/is_root", Boolean.TRUE); // sign it with a blank signature @@ -48,8 +48,8 @@ public class JwtTest { Jwt jwt = new Jwt(); jwt.getHeader().setType("JWT"); jwt.getHeader().setAlgorithm("HS256"); - jwt.getClaims().setIssuer("joe"); jwt.getClaims().setExpiration(new Date(1300819380L * 1000L)); + jwt.getClaims().setIssuer("joe"); jwt.getClaims().setClaim("http://example.com/is_root", Boolean.TRUE); // sign it