# "ReferenceError: KJUR is not defined" JWT generation script

**URL:** <https://community.postman.com/t/referenceerror-kjur-is-not-defined-jwt-generation-script/62864>\
**Category:** Help Hub\
**Tags:** tests\
**Created:** [July 1, 2024, 4:50pm UTC](https://community.postman.com/t/referenceerror-kjur-is-not-defined-jwt-generation-script/62864 "2024-07-01T16:50:22Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![orbital-module-part8](https://avatars.discourse-cdn.com/v4/letter/o/cc9497/32.png) [@orbital-module-part8](https://community.postman.com/u/orbital-module-part8)\
**Post date:** [July 1, 2024, 4:50pm UTC](https://community.postman.com/t/referenceerror-kjur-is-not-defined-jwt-generation-script/62864/1 "2024-07-01T16:50:22Z")

</div>

when I try to generate my JWT - I get a :ReferenceError: KJUR is not defined

this is the part of my pre-req script

```auto
function generateJwt() {
	eval(pm.globals.get('jsrsasign-js')); // import javascript jsrsasign

	var sHeader = JSON.stringify(header);
	var sPayload = JSON.stringify(payload);

	var JWT = KJUR.jws.JWS.sign(header.alg, sHeader, sPayload, jwtPrivateKey);

	pm.environment.set('assertionToken', signedToken);
	console.log('jwt', signedToken);
}

var navigator = {}; // fake a navigator object for the lib
var window = {}; // fake a window object for the lib

if (pm.globals.has('jsrsasign-js')) generateJwt();
else pm.sendRequest(
	'https://kjur.github.io/jsrsasign/jsrsasign-all-min.js',
	function (err, res) {
		if (err) {
			console.log(err);
		} else {
			pm.globals.set('jsrsasign-js', res.text());
			generateJwt();
		}});

```

any suggestion?

---

<div class="post-metadata">

**Author:** ![michaelderekjones](https://sea2.discourse-cdn.com/getpostman/user_avatar/community.postman.com/michaelderekjones/32/14819_2.png) [@michaelderekjones](https://community.postman.com/u/michaelderekjones)\
**Post date:** [July 2, 2024, 10:05am UTC](https://community.postman.com/t/referenceerror-kjur-is-not-defined-jwt-generation-script/62864/2 "2024-07-02T10:05:37Z")

</div>

The error seems correct.

The only mention of the KJUR variable is on this line.

```auto
var JWT = KJUR.jws.JWS.sign(header.alg, sHeader, sPayload, jwtPrivateKey);

```

Where is the variable defined? For that matter, where are the other variables defined. header, payload and privatekey for example.

---

<div class="post-metadata">

**Author:** ![orbital-module-part8](https://avatars.discourse-cdn.com/v4/letter/o/cc9497/32.png) [@orbital-module-part8](https://community.postman.com/u/orbital-module-part8)\
**Post date:** [July 2, 2024, 10:51am UTC](https://community.postman.com/t/referenceerror-kjur-is-not-defined-jwt-generation-script/62864/3 "2024-07-02T10:51:19Z")

</div>

> [@michaelderekjones](#):
>
> ```auto
> var JWT = KJUR.jws.JWS.sign(header.alg, sHeader, sPayload, jwtPrivateKey);
> 
> ```

and normally KJUR was not defined at all, and suddenly out of nowhere, I get this message

this is the full script

```auto
var jwtPrivateKey = `-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----`;

// Set headers for JWT
var header = {
	'alg': 'RS256',
	'typ': 'JWT'
};

// Prepare timestamp in seconds
var currentTimestamp = Math.floor(Date.now() / 1000);

var payload = {
    'iss': 'XXX',
    'aud': 'XXX',
    'iat': currentTimestamp,
	'exp': currentTimestamp + 60 * 5,
    'jti': 'XXX',
    'sub': 'XXX',
    'consumer_id': 'XXX',
    'channel': 'XXX',
    'scope': 'XXX',
    'amr': []
}

function generateJwt() {
	eval(pm.globals.get('jsrsasign-js')); // import javascript jsrsasign

	var sHeader = JSON.stringify(header);
	var sPayload = JSON.stringify(payload);

	var JWT = KJUR.jws.JWS.sign(header.alg, sHeader, sPayload, jwtPrivateKey);

	pm.environment.set('assertionToken', signedToken);
	console.log('jwt', signedToken);
}

var navigator = {}; // fake a navigator object for the lib
var window = {}; // fake a window object for the lib

if (pm.globals.has('jsrsasign-js')) generateJwt();
else pm.sendRequest(
	'https://kjur.github.io/jsrsasign/jsrsasign-all-min.js',
	function (err, res) {
		if (err) {
			console.log(err);
		} else {
			pm.globals.set('jsrsasign-js', res.text());
			generateJwt();
		}});

```

---

<div class="post-metadata">

**Author:** ![michaelderekjones](https://sea2.discourse-cdn.com/getpostman/user_avatar/community.postman.com/michaelderekjones/32/14819_2.png) [@michaelderekjones](https://community.postman.com/u/michaelderekjones)\
**Post date:** [July 2, 2024, 11:28am UTC](https://community.postman.com/t/referenceerror-kjur-is-not-defined-jwt-generation-script/62864/4 "2024-07-02T11:28:35Z")

</div>

Why can’t you use Crypto.JS which is available in the Postman sandbox?

Here’s a public collection with examples.

[Generate JWT | Postman Team Collections | Postman API Network](https://www.postman.com/postman/workspace/postman-team-collections/documentation/4630964-f87288e7-4066-430b-b400-1c1a2a83d740)

It includes an example using the Authorization helper which you might want to consider.

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/getpostman/user_avatar/community.postman.com/system/32/29796_2.png) [@system](https://community.postman.com/u/system)\
**Post date:** [August 1, 2024, 11:29am UTC](https://community.postman.com/t/referenceerror-kjur-is-not-defined-jwt-generation-script/62864/5 "2024-08-01T11:29:26Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
