This tutorial shows you how to define and implement a REST API definition that generates
a JSON Web Token (JWT).
Generate a JWT
Create a REST API to generate and return a JSON Web Token (JWT).
To add and define this REST API, complete the following steps:
- Log in to API
Manager.
- In the Welcome page, click the Develop APIs and Products tile.

- Click .

- Ensure that OpenAPI 3.0 is selected.
- Select New OpenAPI. Click Next.

- Enter the appropriate information to create a REST API definition.
- In the Title field, enter JWT.
- The Name and Base Path fields auto-populate with
the terms jwt and /jwt respectively.
- The Version field auto-populates with 1.0.0.

- Click Next.
- Make no changes on the Secure screen. Click Next.

- You see the progress as the new API gets created. When it is done, you see a Summary. Click
Edit API.

- In the side bar of the Design page, select Paths to display the
Paths panel.
- Click Add.

- In the Path name field, enter /gen.
- Click Create.

- Scroll down. In the Parameters section, click
Add.

- Enter iss-claim in the Parameter name field.
- Select header in the Located In field.
- Enter Enter https://myidp.ibm.com to match in the
Description field.
- Select Required.
- Click Create.

- Scroll down. In the Schema section, click
Create

- Select string in the Type field.
- Click Create.

- After you create the parameter, click Save.
- To add a second parameter. Complete the following steps:
- In the side bar of the Design page, select Parameters under the newly
created /gen path.
- Click Add.

- Enter aud-claim in the Parameter name field.
- Select the header in the Located In field.
- Enter Enter ClientID1 to match in the Description
field.
- Select Required.
- Click Create.

- Scroll down. In the Schema section, click Create.

- Select the string in the Type field.
- Click Create.

- After you create the second parameter, click Save.
- Click Componets > Responses.
- Click Add.

- The Response name field auto-populates with
200.
- Enter 200 OK in the Description field.

- After you create the response, click Save.
- Click Gateway.
- Hover the mouse over the existing Proxy or Invoke
action and click the trash can icon to delete it.

- Drag the Set Variable action onto the processing flow line. A
configuration panel automatically opens.
- Click Add action.

- Enter hs256-key in the Set field.
- Select string in the Type field.
- Enter a JWK in the Value field. Here is an example. { "alg":
"HS256", "kty": "oct", "use": "sig", "k":
"o5yErLaE-dbgVpSw65Rq57OA9dHyaF66Q_Et5azPa-XUjbyP0w9iRWhR4kru09aFfQLXeIODIN4uhjElYKXt8n76jt0Pjkd2pqk4t9abRF6tnL19GV4pflfL6uvVKkP4weOh39tqHt4TmkBgF2P-gFhgssZpjwq6l82fz3dUhQ2nkzoLA_CnyDGLZLd7SZ1yv73uzfE2Ot813zmig8KTMEMWVcWSDvy61F06vs_6LURcq_IEEevUiubBxG5S2akNnWigfpbhWYjMI5M22FOCpdcDBt4L7K1-yHt95Siz0QUb0MNlT_X8F76wH7_A37GpKKJGqeaiNWmHkgWdE8QWDQ",
"kid": "hs256-key" }

- Close the property panel. Click Save.
- Drag the Generate JWT action onto the processing flow line after the
set-variable icon. A configuration panel automatically opens.

- Enter request.headers.iss-claim in the Issuer
Claim field.
- Enter request.headers.aud-claim in the Audience
Claim field.
- Enter hs256-key in the Sign JWK variable name
field.
- Select HS256 in the Cryptogrpahic Algorithm field.

- Close the property panel. Click Save.
- Drag the GatewayScript action onto the processing flow line after the
Generate JWT icon. A configuration panel automatically opens.
- Enter the following code:
var apim = require('apim');
apim.setvariable('message.body',apim.getvariable('generated.jwt'));

- Close the property panel. Click Save.
Testing the REST API
Note: Due to Cross-Origin Resource Sharing (CORS)
restrictions, the assembly test tool cannot be used with the Chrome or Safari browsers on the macOS
Catalina platform.
To test the REST API, complete the following steps:
- Turn on the activation toggle to activate the API you created.

- Click Test.
- Enter https://myidp.ibm.com in the Value field
corresponding to the iss-claim parameter.
- Enter ClientID1 in the Value field corresponding
to the aud-claim parameter.
- Click Send.

- The response contains the generated JWT.

Manage your API definition
Now that your new API works correctly, you can manage this API. To see your immediate options, take the following steps.
- Click the Develop icon
on the navigation bar.

- Click the Options icon
alongside the JWT API. 
- Select Download.
What you did in this tutorial
In this tutorial, you completed the following activities:
- Created a new API definition that generates a JSON Web Token (JWT).
- Tested the new API.