comparison xml/en/docs/njs/examples.xml @ 2640:885bcb41fbcf

Added an example to njs examples.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 19 Jan 2021 12:40:34 +0000
parents 7ad967af16b8
children c60bcc0de435
comparison
equal deleted inserted replaced
2639:7ad967af16b8 2640:885bcb41fbcf
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="16"> 12 rev="17">
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
224 224
225 return generate_hs256_jwt(claims, 'foo', 600); 225 return generate_hs256_jwt(claims, 'foo', 600);
226 } 226 }
227 227
228 export default {jwt}; 228 export default {jwt};
229 </example>
230 </para>
231
232 </section>
233
234
235 <section id="jwt_field" name="Getting Arbitrary Field from JWT
236 as nginx Variable">
237
238 <para>
239 <path>nginx.conf</path>:
240 <example>
241 js_import http.js;
242
243 js_set $jwt_payload_sub main.jwt_payload_sub;
244
245 server {
246 ...
247
248 location /jwt {
249 return 200 $jwt_payload_sub;
250 }
251 }
252 </example>
253 </para>
254
255 <para>
256 <path>http.js</path>:
257 <example>
258 function jwt(data) {
259 var parts = data.split('.').slice(0,2)
260 .map(v=>Buffer.from(v, 'base64url').toString())
261 .map(JSON.parse);
262 return { headers:parts[0], payload: parts[1] };
263 }
264
265 function jwt_payload_sub(r) {
266 return jwt(r.headersIn.Authorization.slice(7)).payload.sub;
267 }
268
269 export default {jwt_payload_sub}
229 </example> 270 </example>
230 </para> 271 </para>
231 272
232 </section> 273 </section>
233 274