comparison xml/en/docs/njs/examples.xml @ 2519:1cd0abf8f1e5

Updated JWT example in njs.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 31 Mar 2020 13:42:53 +0100
parents ba9bfd064a61
children 3ca5edd3ada3
comparison
equal deleted inserted replaced
2518:b4f57de67730 2519:1cd0abf8f1e5
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> 7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
8 8
9 <article name="Examples" 9 <article name="Examples"
10 link="/en/docs/njs/examples.html" 10 link="/en/docs/njs/examples.html"
11 lang="en" 11 lang="en"
12 rev="9"> 12 rev="10">
13 13
14 <section id="helloword" name="Hello World"> 14 <section id="helloword" name="Hello World">
15 15
16 <para> 16 <para>
17 <path>nginx.conf</path>: 17 <path>nginx.conf</path>:
181 </para> 181 </para>
182 182
183 <para> 183 <para>
184 <path>hs_jwt.js</path>: 184 <path>hs_jwt.js</path>:
185 <example> 185 <example>
186 function create_hs256_jwt(claims, key, valid) { 186 function generate_hs256_jwt(claims, key, valid) {
187 var header = { "typ" : "JWT", "alg" : "HS256", "exp" : Math.floor(Date.now()/1000) + valid }; 187 var header = { typ: "JWT",
188 188 alg: "HS256",
189 var s = JSON.stringify(header).toBytes().toString('base64url') + '.' 189 exp: Math.floor(Date.now()/1000) + valid };
190 + JSON.stringify(claims).toBytes().toString('base64url'); 190
191 var s = [header, claims].map(JSON.stringify)
192 .map(v=>v.toBytes())
193 .map(v=>v.toString('base64url'))
194 .join('.');
191 195
192 var h = require('crypto').createHmac('sha256', key); 196 var h = require('crypto').createHmac('sha256', key);
193 197
194 return s + '.' + h.update(s).digest().toString('base64url'); 198 return s + '.' + h.update(s).digest().toString('base64url');
195 } 199 }
196 200
197 function jwt(r) { 201 function jwt(r) {
198 var claims = { 202 var claims = {
199 "iss" : "nginx", 203 iss: "nginx",
200 "sub" : "alice", 204 sub: "alice",
201 "foo" : 123, 205 foo: 123,
202 "bar" : "qq", 206 bar: "qq",
203 "zyx" : false 207 zyx: false
204 }; 208 };
205 209
206 return create_hs256_jwt(claims, 'foo', 600); 210 return generate_hs256_jwt(claims, 'foo', 600);
207 } 211 }
208 </example> 212 </example>
209 </para> 213 </para>
210 214
211 </section> 215 </section>