|
10 | 10 |
|
11 | 11 | This repo contains complete examples for various use cases where `njs <http://nginx.org/en/docs/njs/>`_ is useful. The document as well as `njs documentation <http://nginx.org/en/docs/njs/>`_ expects some familiarity with and understanding of nginx. Beginners should refer to the official `admin guide <https://docs.nginx.com/nginx/admin-guide/>`_.
|
12 | 12 |
|
13 |
| -Note: the examples below work with njs >= `0.5.2 <http://nginx.org/en/docs/njs/changes.html#njs0.5.2>`_. To see the current version run the following command: ``docker run -i -t nginx:latest /usr/bin/njs -V``. |
| 13 | +Note: the examples below work with njs >= `0.7.0 <http://nginx.org/en/docs/njs/changes.html#njs0.7.0>`_. To see the current version run the following command: ``docker run -i -t nginx:latest /usr/bin/njs -V``. |
14 | 14 |
|
15 | 15 | Running inside Docker
|
16 | 16 | ---------------------
|
@@ -402,29 +402,32 @@ example.js:
|
402 | 402 |
|
403 | 403 | .. code-block:: js
|
404 | 404 |
|
405 |
| - function generate_hs256_jwt(claims, key, valid) { |
406 |
| - var header = { typ: "JWT", alg: "HS256" }; |
407 |
| - var claims = Object.assign(claims, {exp: Math.floor(Date.now()/1000) + valid}); |
| 405 | + async function generate_hs256_jwt(init_claims, key, valid) { |
| 406 | + let header = { typ: "JWT", alg: "HS256" }; |
| 407 | + let claims = Object.assign(init_claims, {exp: Math.floor(Date.now()/1000) + valid}); |
408 | 408 |
|
409 |
| - var s = [header, claims].map(JSON.stringify) |
410 |
| - .map(v=>v.toString('base64url')) |
| 409 | + let s = [header, claims].map(JSON.stringify) |
| 410 | + .map(v=>Buffer.from(v).toString('base64url')) |
411 | 411 | .join('.');
|
412 | 412 |
|
413 |
| - var h = require('crypto').createHmac('sha256', key); |
| 413 | + let wc_key = await crypto.subtle.importKey('raw', key, {name: 'HMAC', hash: 'SHA-256'}, |
| 414 | + false, ['sign']); |
| 415 | + let sign = await crypto.subtle.sign({name: 'HMAC'}, wc_key, s); |
414 | 416 |
|
415 |
| - return s + '.' + h.update(s).digest('base64url'); |
| 417 | + return s + '.' + Buffer.from(sign).toString('base64url'); |
416 | 418 | }
|
417 | 419 |
|
418 |
| - function jwt(r) { |
419 |
| - var claims = { |
| 420 | + async function jwt(r) { |
| 421 | + let claims = { |
420 | 422 | iss: "nginx",
|
421 | 423 | sub: "alice",
|
422 | 424 | foo: 123,
|
423 | 425 | bar: "qq",
|
424 | 426 | zyx: false
|
425 | 427 | };
|
426 | 428 |
|
427 |
| - return generate_hs256_jwt(claims, process.env.JWT_GEN_KEY, 600); |
| 429 | + let jwtv = await generate_hs256_jwt(claims, process.env.JWT_GEN_KEY, 600); |
| 430 | + r.setReturnValue(jwtv); |
428 | 431 | }
|
429 | 432 |
|
430 | 433 | export default {jwt}
|
|
0 commit comments