教程:验证 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(REST、 GraphQL 或 SOAP)

    添加API屏幕

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

    选择 OpenAPI

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

    基本信息屏幕

  7. 单击下一步
  8. 更改无安全屏幕。 单击下一步

    安全 API

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

    新的API摘要

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

    “路径”页面

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

    添加路径信息

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

    添加参数

    1. 参数名称字段中输入 Authorization
    2. 在 " 位于 "字段中选择 header
    3. 在描述字段中输入 Enter Bearer <jwt> 进行匹配。
    4. 选择必填项
    5. 单击创建

      路径 参数设置

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

      添加模式

    7. 类型字段中选择 string
    8. 单击创建

      添加字符串

  15. 创建参数后,点击保存
  16. 单击组件 > 响应
  17. 单击添加

    回复页面

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

    添加模式

  20. 创建回复后,点击保存
  21. 点击“网关 ”。
  22. 将鼠标悬停在现有的代理启动操作上,然后单击垃圾桶图标将其删除。

    网关页面

  23. 设置变量操作拖动到处理流线上。 将自动打开配置面板。
  24. 点击 “添加操作 ”。

    已添加可变操作

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

    Setvar属性

  28. 关闭属性面板。 单击保存
  29. 验证 JWT 操作拖至处理流线和是哪个 set-variable 图标之后。 将自动打开配置面板。

    JWT Validate操作已添加

  30. 验证加密JWK变量名称字段中输入 hs256-key

    JWT 验证属性

  31. 关闭属性面板。 单击保存
  32. GatewayScript 操作拖动到“验证 JWT”图标之后的处理流线上。 将自动打开配置面板。
  33. 输入以下代码:
    var apim = require('apim');
    apim.setvariable('message.body',apim.getvariable('decoded.claims'));
    注意: 响应可能包括以下警告,可以忽略:
    警告: 此 gatewayscript 策略不应使用 apim 模块,该模块仅用于迁移旧的 API。

    GatewayScript 添加操作

  34. 关闭属性面板。 单击保存
  35. 确保启用显示捕获选项,从而显示捕获区域。

    页面集合

  36. 点击“捕捉 ”。 将打开属性面板。
  37. 点击添加默认捕获

    页面集合

  38. GatewayScript 策略操作拖动到捕获流线上。
  39. 输入以下代码:
    var apim = require('apim');
    apim.setvariable('message.body',apim.getvariable('jwt-validate.error-message'));

    组装页面抓取流量

  40. 关闭属性面板。 单击保存

测试 REST API

备注: 由于跨源资源共享(CORS)的限制,在 macOS Catalina平台上,Chrome或Safari浏览器无法使用装配测试工具。
要测试 REST API,您需要有效的 JWT。 您可以通过启动教程:生成 JSON Web 令牌 (JWT) 中创建的 API 来获取这样的 JWT。 要测试 REST API,请完成以下步骤:
  1. 打开激活开关,激活您创建的API。
  2. 单击测试
  3. 输入 Bearer ,后跟一个空格,再后跟一个与授权参数对应的值字段中用相同的签名密钥生成的有效 JWT。
    注意 :如果参数中缺少授权密钥,请确认选择了正确的请求路径。 选择一个以 /val 结尾的请求路径,或者手动将 /val 添加到GET请求中。
  4. 单击发送
  5. 响应包含分支数据。

管理 API 定义

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

  1. 单击导航栏上的 " 开发 "图标 开发图标
  2. 单击 Mapper API 旁的选项图标 管理图标

    管理 API

  3. 选择下载

您在本教程中执行的操作

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