comparison xml/en/docs/njs/examples.xml @ 2639:7ad967af16b8

Updated HS JWT example in njs.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 19 Jan 2021 12:09:39 +0000
parents c81b1fadbcf3
children 885bcb41fbcf
comparison
equal deleted inserted replaced
2638:1d775e54f594 2639:7ad967af16b8
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="15"> 12 rev="16">
13 13
14 <section id="summary"> 14 <section id="summary">
15 15
16 <para> 16 <para>
17 The examples work since 17 The examples work since
203 function generate_hs256_jwt(claims, key, valid) { 203 function generate_hs256_jwt(claims, key, valid) {
204 var header = { typ: "JWT", alg: "HS256" }; 204 var header = { typ: "JWT", alg: "HS256" };
205 var claims = Object.assign(claims, {exp: Math.floor(Date.now()/1000) + valid}); 205 var claims = Object.assign(claims, {exp: Math.floor(Date.now()/1000) + valid});
206 206
207 var s = [header, claims].map(JSON.stringify) 207 var s = [header, claims].map(JSON.stringify)
208 .map(v=>v.toUTF8())
209 .map(v=>v.toString('base64url')) 208 .map(v=>v.toString('base64url'))
210 .join('.'); 209 .join('.');
211 210
212 var h = require('crypto').createHmac('sha256', key); 211 var h = require('crypto').createHmac('sha256', key);
213 212
214 return s + '.' + h.update(s).digest().toString('base64url'); 213 return s + '.' + h.update(s).digest('base64url');
215 } 214 }
216 215
217 function jwt(r) { 216 function jwt(r) {
218 var claims = { 217 var claims = {
219 iss: "nginx", 218 iss: "nginx",