diff --git a/webgoat-lessons/jwt/src/main/java/org/owasp/webgoat/jwt/JWTFinalEndpoint.java b/webgoat-lessons/jwt/src/main/java/org/owasp/webgoat/jwt/JWTFinalEndpoint.java index d76342aa5..3bbe8ed62 100644 --- a/webgoat-lessons/jwt/src/main/java/org/owasp/webgoat/jwt/JWTFinalEndpoint.java +++ b/webgoat-lessons/jwt/src/main/java/org/owasp/webgoat/jwt/JWTFinalEndpoint.java @@ -28,11 +28,18 @@ import org.apache.commons.lang3.StringUtils; import org.owasp.webgoat.assignments.AssignmentEndpoint; import org.owasp.webgoat.assignments.AssignmentHints; import org.owasp.webgoat.assignments.AttackResult; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import javax.sql.DataSource; + +import java.nio.charset.Charset; +import java.security.NoSuchAlgorithmException; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Base64; +import java.util.Random; /** *
@@ -68,6 +75,25 @@ public class JWTFinalEndpoint extends AssignmentEndpoint { this.dataSource = dataSource; } + @PostMapping(path="/JWT/encode",produces=MediaType.TEXT_HTML_VALUE) + @ResponseBody + public String encode(@RequestParam("jsonHeader") String jsonHeader, + @RequestParam("jsonPayload") String jsonPayload, + @RequestParam("jsonSecret") String jsonSecret) throws NoSuchAlgorithmException { + + String header = Base64.getUrlEncoder().encodeToString(jsonHeader.getBytes(Charset.defaultCharset())); + String body = Base64.getUrlEncoder().encodeToString(jsonPayload.getBytes(Charset.defaultCharset())); + String signature = ""; + return "{\"header\":\""+header+"\",\"payload\":\""+body+"\",\"secret\":\""+signature+"\"}"; + } + + @PostMapping(path="/JWT/decode",produces=MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public String decode(@RequestParam("token") String token) throws NoSuchAlgorithmException { + + return new String(Base64.getUrlDecoder().decode(token.getBytes(Charset.defaultCharset()))); + } + @PostMapping("/JWT/final/follow/{user}") public @ResponseBody String follow(@PathVariable("user") String user) { diff --git a/webgoat-lessons/jwt/src/main/resources/html/JWT.html b/webgoat-lessons/jwt/src/main/resources/html/JWT.html index 9c1a6889f..a75f170aa 100644 --- a/webgoat-lessons/jwt/src/main/resources/html/JWT.html +++ b/webgoat-lessons/jwt/src/main/resources/html/JWT.html @@ -8,7 +8,10 @@ $(document).ready( $("#secrettoken").load('/WebGoat/JWT/secret/gettoken'); } ); + + +@@ -16,6 +19,23 @@ $(document).ready(+ + +@@ -296,6 +316,17 @@ $(document).ready(+