教程:生成 JSON Web 令牌 (JWT)

本教程介绍如何定义和实施用于生成 JSON Web 令牌 (JWT) 的 REST API 定义。

关于本教程

在本教程中,您将完成以下课程:
  1. 生成 JWT
  2. 测试 REST API
注意: 沙盒目录必须配置为使用 DataPower® Gateway (v5 compatible)DataPower API Gateway 或两者。 请参阅创建和配置目录

生成 JWT

创建 REST API 以生成并返回 JSON Web 令牌 (JWT)。

要添加并定义此 REST API,请完成以下步骤:
  1. 登录API管理器
  2. 在“欢迎”页面中,单击开发 API 和产品磁贴。

    API管理器屏幕

  3. 单击添加 > 应用程序接口

    添加API屏幕

  4. 确保 OpenAPI 3.0 被选中。
  5. 选择 " 新建 OpenAPI ",然后单击 " 下一步 "。

    选择 OpenAPI

  6. 输入相应的信息以创建 REST API 定义。
    1. 在标题栏中输入 JWT
    2. 名称基本路径字段分别使用术语 jwt/jwt 自动填充。
    3. 版本字段自动填充为 1.0.0

    基本信息屏幕

  7. 单击下一步
  8. 在 " 安全 "部分,单击 "下一步 "。

    安全 API

  9. 您将看到新建 API 的进度。 完成后,您将看到摘要信息。 点击编辑API

    新的API摘要

  10. 在“设计”页面的侧边栏中,选择路径以显示路径面板。
  11. 单击添加 +

    “路径”页面

  12. 路径字段中输入 /gen
  13. 单击添加

    添加路径信息

  14. 向下滚动。 在参数部分,单击添加 +

    添加参数

    1. 参数名称字段中输入 iss-claim
    2. 从 " 所在位置 "列表中选择 header
    3. 在描述字段中输入 https://myidp.ibm.com 进行匹配。
    4. 选择必填复选框。
    5. 单击添加

      路径 参数设置

    6. 向下滚动。 在 “架构”部分 ,点击 “创建”

      添加模式

    7. 类型列表中选择字符串
    8. 单击添加

      添加字符串

  15. 创建参数后,点击保存
  16. 添加第二个参数。 完成以下步骤:
    1. 在“设计”页面的侧边栏中,选择新创建的/gen路径下的 “参数”。

      参数侧边栏

    2. 单击添加 +

      参数页面

    3. 参数名称字段中输入 aud-claim
    4. 从 " 所在位置 "列表中选择 header
    5. 在描述字段中输入 Enter ClientID1 进行匹配。
    6. 选择必填复选框。
    7. 单击添加

      路径 参数设置

    8. 向下滚动。 在 “架构”部分 ,点击 “创建 ”。

      添加模式

    9. 类型列表中选择 string
    10. 单击添加

      添加字符串

  17. 创建第二个参数后,点击保存
  18. 单击组件 > 响应
  19. 单击添加

    回复页面

  20. “回复”名称字段自动填充为 200
  21. 请在描述栏中输入 200 OK

    添加模式

  22. 单击添加
  23. 创建回复后,点击保存
  24. 选择网关选项卡。
  25. 将鼠标悬停在现有策略节点上,然后单击垃圾桶图标将其删除。

    网关页面

  26. 在 "操作 "中单击 " 设置变量 ",将操作添加到处理流程行。 将自动打开配置面板。
  27. 点击 “添加操作 ”。

    已添加可变操作

  28. “设置”字段中输入 hs256-key
  29. 类型列表中选择 string
  30. 价值栏中输入JWK。 以下是一个示例。 { "alg": "HS256", "kty": "oct", "use": "sig", "k": "o5yErLaE-dbgVpSw65Rq57OA9dHyaF66Q_Et5azPa-XUjbyP0w9iRWhR4kru09aFfQLXeIODIN4uhjElYKXt8n76jt0Pjkd2pqk4t9abRF6tnL19GV4pflfL6uvVKkP4weOh39tqHt4TmkBgF2P-gFhgssZpjwq6l82fz3dUhQ2nkzoLA_CnyDGLZLd7SZ1yv73uzfE2Ot813zmig8KTMEMWVcWSDvy61F06vs_6LURcq_IEEevUiubBxG5S2akNnWigfpbhWYjMI5M22FOCpdcDBt4L7K1-yHt95Siz0QUb0MNlT_X8F76wH7_A37GpKKJGqeaiNWmHkgWdE8QWDQ", "kid": "hs256-key" }

    Setvar属性

  31. 关闭属性面板。 单击保存
  32. 在 " 操作 "中,单击 " 生成 JWT ",将操作添加到设置变量图标后的处理流程行中。 将自动打开配置面板。
    注意: 如果 "构建装配流程 "面板不可见,请单击设置变量附近的 + 以显示该面板。

    JWT 添加行动

  33. 请在 “发行人索赔” 一栏中输入 request.headers.iss-claim
  34. 请在观众索取栏中输入 request.headers.aud-claim
  35. “JWK变量名称”字段中输入 hs256-key
  36. 加密算法列表中选择 HS256

    JWT 生成属性

  37. 关闭属性面板。 单击保存
  38. 操作中单击 GatewayScript 将操作添加到生成 JWT 图标后的处理流程行中。 将自动打开配置面板。
  39. 输入以下代码:
    var apim = require('apim');
    apim.setvariable('message.body',apim.getvariable('generated.jwt'));

    GatewayScript 添加操作

    注意: 在添加 GatewayScript 操作时,可能会看到以下警告: This gatewayscript policy should not use the apim module which is only for migrating old APIs. 您可以忽略此警告,继续前进。
  40. 关闭属性面板。 单击保存

测试 REST API

备注: 由于跨源资源共享(CORS)的限制,在 macOS Catalina平台上,Chrome或Safari浏览器无法使用装配测试工具。
要测试 REST API,请完成以下步骤:
  1. 单击测试
    注意: 如果没有为目录配置任何网关,则无法测试 REST API, 测试选项卡下会显示错误消息。测试
  2. 单击目标配置 ,将自动发布设置为开
  3. 单击保存首选项。 在 "测试 "选项卡中,API 状态显示为 " 联机 "。
  4. 在对应于 iss-claim参数的 值字段中输入 https://myidp.ibm.com
  5. aud-claim参数对应的值字段中输入 ClientID1
  6. 单击发送

    测试页面和发送按钮

  7. 响应包含生成的 JWT。

    测试结果

管理 API 定义

现在,您的新 API 已正常运行,您可以管理该 API 了。 要查看即时选项,请执行以下步骤。

  1. 单击导航栏上的 " 开发 "图标 开发图标

    导航栏

  2. 单击 JWT API 旁边的选项图标 管理图标

    管理 API

  3. 选择下载

您在本教程中执行的操作

在本教程中,您完成了以下活动:
  • 创建用于生成 JSON Web 令牌 (JWT) 的新 API 定义。
  • 已测试新 API。