{"id":19662,"date":"2022-10-14T03:16:43","date_gmt":"2022-10-14T01:16:43","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=19662"},"modified":"2022-10-19T18:54:18","modified_gmt":"2022-10-19T16:54:18","slug":"json-web-token-mit-java-jwt-erzeugen-ist-nicht-schwer-mit-jjwt","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=19662","title":{"rendered":"JSON Web Token mit Java (JWT) erzeugen ist nicht schwer mit JJWT"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/jwt-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1919\" class=\"aligncenter size-full wp-image-19681\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/jwt-scaled.jpg 2560w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/jwt-300x225.jpg 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/jwt-1024x768.jpg 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/jwt-768x576.jpg 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/jwt-1536x1151.jpg 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/jwt-2048x1535.jpg 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Ein Web-Token ist mit Java schnell erzeugt&#8230;. <!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/JSON-Web-Token.png\" alt=\"\" width=\"2704\" height=\"1756\" class=\"aligncenter size-full wp-image-19663\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/JSON-Web-Token.png 2704w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/JSON-Web-Token-300x195.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/JSON-Web-Token-1024x665.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/JSON-Web-Token-768x499.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/JSON-Web-Token-1536x997.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2022\/10\/JSON-Web-Token-2048x1330.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>Wir nutzen dazu die <a href=\"https:\/\/github.com\/jwtk\/jjwt\">jsonwebtoken<\/a> Lib. Wir brauchen diese Abh\u00e4ngigkeiten in der pom.xml, zwei nur zur Laufzeit<\/p>\n<pre class=\"minimize:true lang:xhtml decode:true \" >\r\n&lt;project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n\t&lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n\t&lt;groupId&gt;de.wenzlaff.jwt&lt;\/groupId&gt;\r\n\t&lt;artifactId&gt;de.wenzlaff.jwt&lt;\/artifactId&gt;\r\n\t&lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\r\n\r\n\t&lt;dependencies&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;io.jsonwebtoken&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;jjwt-api&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;0.11.5&lt;\/version&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;io.jsonwebtoken&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;jjwt-impl&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;0.11.5&lt;\/version&gt;\r\n\t\t\t&lt;scope&gt;runtime&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t\t&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;io.jsonwebtoken&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;jjwt-jackson&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;0.11.5&lt;\/version&gt;\r\n\t\t\t&lt;scope&gt;runtime&lt;\/scope&gt;\r\n\t\t&lt;\/dependency&gt;\r\n\t&lt;\/dependencies&gt;\r\n&lt;\/project&gt;<\/pre>\n<p>Dann noch etwas Java-Code:<\/p>\n<pre class=\"theme:eclipse lang:java decode:true \" >\r\n\r\n\r\n                Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);\r\n\r\n\t\tString jws = Jwts.builder().setSubject(\"kleinhirn.eu\").signWith(key)\r\n\t\t\t\t.compact();\r\n\r\n\t\tSystem.out.println(\"Token: \" + jws);\r\n\t\r\n\t\tString subject = Jwts.parserBuilder().setSigningKey(key).build()\r\n\t\t\t\t.parseClaimsJws(jws).getBody().getSubject();\r\n\r\n\t\tSystem.out.println(\"Subject: \" + subject);\r\n\r\n\t\tClaims body = Jwts.parserBuilder().setSigningKey(key).build()\r\n\t\t\t\t.parseClaimsJws(jws).getBody();\r\n\r\n\t\tSystem.out.println(\"Body: \" + body);\r\n\r\n\t\tString algorithm = Jwts.parserBuilder().setSigningKey(key).build()\r\n\t\t\t\t.parseClaimsJws(jws).getHeader().getAlgorithm();\r\n\r\n\t\tSystem.out.println(\"getAlgorithm: \" + algorithm);<\/pre>\n<p>Schon haben wir einen Web-Token:<\/p>\n<pre class=\"lang:default decode:true \" >Token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJrbGVpbmhpcm4uZXUifQ.2ls4hoyYQyEn9GXpMAlA6b7BJgBIUPiwI0L18wdskkg\r\nSubject: kleinhirn.eu\r\nBody: {sub=kleinhirn.eu}\r\ngetAlgorithm: HS256<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ein Web-Token ist mit Java schnell erzeugt&#8230;.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5],"tags":[5298,5297,1257,5300,819,176,5299],"class_list":["post-19662","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","tag-java-web-token","tag-jjwt","tag-json","tag-json-token","tag-key","tag-sicherheit","tag-web-token"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/19662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19662"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/19662\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19662"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}