|
| 1 | +extends layout |
| 2 | + |
| 3 | +block content |
| 4 | + nav.navbar.closed |
| 5 | + .container |
| 6 | + .top-mobile |
| 7 | + .menu-trigger |
| 8 | + span |
| 9 | + |
| 10 | + a.brand(href='/') |
| 11 | + img(src='/img/pic_logo.svg').icon |
| 12 | + img(src='/img/logo.svg').logo |
| 13 | + |
| 14 | + nav.menu |
| 15 | + a(href='#debugger').scrollto Debugger |
| 16 | + a(href='#libraries').scrollto Libraries |
| 17 | + a(href='/introduction') Introduction |
| 18 | + a(href='https://ask.auth0.com/category/jwt', target='_blank') Ask |
| 19 | + a(href='http://swag.auth0.com/', target='_blank') Get a T-shirt! |
| 20 | + |
| 21 | + .social |
| 22 | + a.a0(href='https://auth0.com/', target='_blank') |
| 23 | + img(src='/img/ico_a0_white.svg') |
| 24 | + a.twitter(href='https://twitter.com/auth0', target="_blank") |
| 25 | + img(src='/img/ico_twitter.svg') |
| 26 | + |
| 27 | + a.supported(href='https://auth0.com/', target="_blank") |
| 28 | + | Supported by |
| 29 | + img(src='/img/ico_logo.svg') |
| 30 | + |
| 31 | + section.banner-jwt |
| 32 | + .container |
| 33 | + a.logo(href='/') |
| 34 | + img(src='/img/pic_logo.svg') |
| 35 | + |
| 36 | + p |
| 37 | + | JSON Web Tokens are an open, industry standard |
| 38 | + a(href='https://tools.ietf.org/html/rfc7519', target='_blank') RFC 7519 |
| 39 | + | method for representing claims securely between two parties. |
| 40 | + p |
| 41 | + span JWT.IO allows you to decode, verify and generate JWT. |
| 42 | + |
| 43 | + section.update-site |
| 44 | + svg(width='32px', height='32px', viewbox='0 0 32 32', version='1.1', class="paper") |
| 45 | + g#Page-1(stroke='none', stroke-width='1', fill='none', fill-rule='evenodd', sketch:type='MSPage') |
| 46 | + g#32px(sketch:type='MSLayerGroup', transform='translate(-805.000000, -2193.000000)', fill='#373A39') |
| 47 | + path#Fill-529(d='M835,2221 C835,2222.1 834.104,2223 833,2223 L809,2223 C807.896,2223 807,2222.1 807,2221 L807,2197 C807,2195.89 807.896,2195 809,2195 L833,2195 C834.104,2195 835,2195.89 835,2197 L835,2221 L835,2221 Z M833,2193 L809,2193 C806.79,2193 805,2194.79 805,2197 L805,2221 C805,2223.21 806.79,2225 809,2225 L833,2225 C835.209,2225 837,2223.21 837,2221 L837,2197 C837,2194.79 835.209,2193 833,2193 L833,2193 Z M828,2203 L814,2203 C813.447,2203 813,2203.45 813,2204 C813,2204.55 813.447,2205 814,2205 L828,2205 C828.552,2205 829,2204.55 829,2204 C829,2203.45 828.552,2203 828,2203 L828,2203 Z M828,2209 L814,2209 C813.447,2209 813,2209.45 813,2210 C813,2210.55 813.447,2211 814,2211 L828,2211 C828.552,2211 829,2210.55 829,2210 C829,2209.45 828.552,2209 828,2209 L828,2209 Z M828,2215 L814,2215 C813.447,2215 813,2215.45 813,2216 C813,2216.55 813.447,2217 814,2217 L828,2217 C828.552,2217 829,2216.55 829,2216 C829,2215.45 828.552,2215 828,2215 L828,2215 Z', sketch:type='MSShapeGroup') |
| 48 | + |
| 49 | + strong NEW! |
| 50 | + span JWT.IO gets a refresh! New logo, new website and more. |
| 51 | + a(href="https://auth0.com/blog/2015/07/21/jwt-json-webtoken-logo/", target="_blank") |
| 52 | + | Learn More |
| 53 | + svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') |
| 54 | + path(d='M-838-2232H562v3600H-838z', fill='none') |
| 55 | + path(d='M16 10v28l22-14z') |
| 56 | + path(d='M0 0h48v48H0z', fill='none') |
| 57 | + |
| 58 | + section#debugger.debugger-jwt |
| 59 | + .container |
| 60 | + //- a(name='debugger') |
| 61 | + h1 Debugger |
| 62 | + |
| 63 | + .jwt-playground |
| 64 | + |
| 65 | + .algorithm |
| 66 | + span Algorithm |
| 67 | + .hide |
| 68 | + label |
| 69 | + input(type='radio', name='algorithm', value='HS256', checked='') |
| 70 | + label |
| 71 | + input(type='radio', name='algorithm', value='RS256') |
| 72 | + .jwt-select |
| 73 | + select |
| 74 | + option(name='algorithm',value='HS256', selected='') HS256 |
| 75 | + option(name='algorithm',value='RS256') RS256 |
| 76 | + |
| 77 | + .algorithm-code |
| 78 | + .tab-nav |
| 79 | + .tab-link.current |
| 80 | + a(href='#encoded-jwt') Encoded |
| 81 | + small paste a token here |
| 82 | + .tab-link |
| 83 | + a(href='#decoded-jwt') Decoded |
| 84 | + small edit the payload and secret (only HS256 supported) |
| 85 | + |
| 86 | + .tab-content |
| 87 | + #encoded-jwt.box-content.current |
| 88 | + .input.js-input |
| 89 | + #decoded-jwt.box-content |
| 90 | + .output |
| 91 | + .jwt-explained.jwt-header |
| 92 | + p.text-line HEADER: |
| 93 | + span ALGORITHM & TOKEN TYPE |
| 94 | + .js-header |
| 95 | + |
| 96 | + .jwt-explained.jwt-payload |
| 97 | + p.text-line PAYLOAD: |
| 98 | + span DATA |
| 99 | + .js-payload |
| 100 | + |
| 101 | + .jwt-explained.jwt-signature |
| 102 | + p.text-line VERIFY SIGNATURE |
| 103 | + pre.pre-encode.HS256. |
| 104 | + HMACSHA256( |
| 105 | + base64UrlEncode(header) + "." + |
| 106 | + base64UrlEncode(payload), |
| 107 | + <input type="text" name="secret" value="secret"> |
| 108 | + )<span class="is-base64-encoded-label"> <input id="is-base64-encoded" type="checkbox" name="is-base64-encoded"><label for="is-base64-encoded">secret base64 encoded</label></span> |
| 109 | + pre.pre-encode.RS256. |
| 110 | + RSASHA256( |
| 111 | + base64UrlEncode(header) + "." + |
| 112 | + base64UrlEncode(payload), |
| 113 | + <textarea rows="4" name="public-key" placeholder="Public Key or Certificate. Enter it in plain text only if you want to verify a token"></textarea>, |
| 114 | + <textarea rows="5" name="private-key" placeholder="Private Key (RSA). Enter the it in plain text only if you want to generate a new token. The key never leaves your browser."></textarea> |
| 115 | + ) |
| 116 | + |
| 117 | + .validation-status.js-signature |
| 118 | + |
| 119 | + section#libraries.libraries-jwt |
| 120 | + .container |
| 121 | + .title-header |
| 122 | + //- a(name='libraries') |
| 123 | + h1 Libraries for Token Signing/Verification |
| 124 | + |
| 125 | + .filter |
| 126 | + span Filter by |
| 127 | + .jwt-select |
| 128 | + select |
| 129 | + option(value='*', selected='') All |
| 130 | + option(value='.go') Go |
| 131 | + option(value='.haskell') Haskell |
| 132 | + option(value='.java') Java |
| 133 | + option(value='.net') NET |
| 134 | + option(value='.python') Python |
| 135 | + option(value='.php') PHP |
| 136 | + |
| 137 | + .warning |
| 138 | + b Warning: |
| 139 | + | Critical vulnerabilities in JSON Web Token libraries with asymmetric keys. |
| 140 | + a(href='https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/') |
| 141 | + | Learn more |
| 142 | + |
| 143 | + svg(height='48', viewbox='0 0 48 48', width='48', xmlns='http://www.w3.org/2000/svg') |
| 144 | + path(d='M-838-2232H562v3600H-838z', fill='none') |
| 145 | + path(d='M16 10v28l22-14z') |
| 146 | + |
| 147 | + .libraries-sv(data-accordion-group) |
| 148 | + include libraries/net.jade |
| 149 | + include libraries/net2.jade |
| 150 | + include libraries/netrt.jade |
| 151 | + include libraries/python.jade |
| 152 | + include libraries/python2.jade |
| 153 | + include libraries/python3.jade |
| 154 | + include libraries/node.jade |
| 155 | + include libraries/java.jade |
| 156 | + include libraries/java2.jade |
| 157 | + include libraries/java3.jade |
| 158 | + include libraries/js.jade |
| 159 | + include libraries/php.jade |
| 160 | + include libraries/php2.jade |
| 161 | + include libraries/php3.jade |
| 162 | + include libraries/php4.jade |
| 163 | + include libraries/ruby.jade |
| 164 | + include libraries/ruby2.jade |
| 165 | + include libraries/elixir.jade |
| 166 | + include libraries/go.jade |
| 167 | + include libraries/go2.jade |
| 168 | + include libraries/haskell.jade |
| 169 | + include libraries/haskell2.jade |
| 170 | + include libraries/rust.jade |
| 171 | + include libraries/lua.jade |
| 172 | + include libraries/scala.jade |
| 173 | + include libraries/d.jade |
| 174 | + include libraries/clojure.jade |
| 175 | + include libraries/swift.jade |
| 176 | + include libraries/c.jade |
| 177 | + include libraries/q.jade |
| 178 | + include libraries/delphi.jade |
| 179 | + |
| 180 | + section.sources |
| 181 | + .container |
| 182 | + .columns |
| 183 | + .column.badges |
| 184 | + h2 Badges |
| 185 | + .hold |
| 186 | + a(href='http://jwt.io/assets/badge.svg', target='_blank') |
| 187 | + img(src='assets/badge.svg') |
| 188 | + .text-hold |
| 189 | + a(href='http://jwt.io/assets/badge.svg', target='_blank') |
| 190 | + i.icon-budicon-722 |
| 191 | + p http://jwt.io/assets/badge.svg |
| 192 | + .hold |
| 193 | + a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') |
| 194 | + img(src='assets/badge-compatible.svg') |
| 195 | + .text-hold |
| 196 | + a(href='http://jwt.io/assets/badge-compatible.svg', target='_blank') |
| 197 | + i.icon-budicon-722 |
| 198 | + p http://jwt.io/assets/badge-compatible.svg |
| 199 | + .column.logotype |
| 200 | + h2 Logotype |
| 201 | + .hold |
| 202 | + a(href='http://jwt.io/assets/icon.svg', target='_blank') |
| 203 | + img(src='assets/icon.svg') |
| 204 | + .text-hold |
| 205 | + a(href='http://jwt.io/assets/icon.svg', target='_blank') |
| 206 | + i.icon-budicon-722 |
| 207 | + p http://jwt.io/assets/icon.svg |
| 208 | + .hold |
| 209 | + a(href='http://jwt.io/assets/logo.svg', target='_blank') |
| 210 | + img(src='assets/logo.svg') |
| 211 | + .text-hold |
| 212 | + a(href='http://jwt.io/assets/logo.svg', target='_blank') |
| 213 | + i.icon-budicon-722 |
| 214 | + p http://jwt.io/assets/logo.svg |
| 215 | + .column.tshirt |
| 216 | + h2 Store |
| 217 | + img(src='img/pic_tshirt.png') |
| 218 | + a.buy(href='http://swag.auth0.com/', target='_blank') Buy T-Shirt |
| 219 | + |
| 220 | + .tokens-created |
| 221 | + .container |
| 222 | + img(src='img/pic_logo_ft.svg') |
| 223 | + p JWT.io is brought to you by Auth0. |
| 224 | + p A cloud service, APIs and tools that eliminate the friction of identity for your applications and APIs. |
| 225 | + |
| 226 | + a(href='https://auth0.com/signup', target="_blank").btn.btn-success Create free account |
| 227 | + |
| 228 | + .token |
| 229 | + h5 TOKENS CREATED |
| 230 | + |
| 231 | + .counter |
0 commit comments