HTTP > 发出JWT请求模块
Adobe Workfront Fusion HTTP > 发出JWT请求模块向URL发送HTTP(S)请求,并授权它使用JSON Web令牌(JWT),该模块会在每次调用时为您签名。 然后,将以与标准HTTP > 发出请求模块中相同的方式处理响应。
此模块的行为类似于标准发出请求模块,主要区别在于:它自动对您提供的声明签署JWT,并将其添加到请求中,默认情况下为Authorization: Bearer <token>。
使用此模块可调用任何需要已签名JWT进行身份验证的API,例如需要使用共享密钥(HMAC)或私钥(RSA/ECDSA)签名的短期持有者令牌的服务,而无需在单独的步骤中创建令牌。
如果API使用OAuth 2.0、基本身份验证、API密钥或客户端证书,请改用匹配的专用HTTP模块。
访问权限要求
| table 0-row-2 1-row-2 2-row-2 3-row-2 layout-auto html-authored no-header | |
|---|---|
| Adobe Workfront 包 |
任意 Adobe Workfront Workflow 包以及任意 Adobe Workfront 自动化和集成包 Workfront Ultimate Workfront Prime 和 Select 包,且需额外购买 Workfront Fusion。 |
| Adobe Workfront 许可证 |
标准 工作版或更高版本 |
| Adobe Workfront Fusion 许可证 |
基于操作:适用于拥有基于操作的许可证的组织 基于连接器(旧版):Workfront Fusion for Work Automation and Integration |
| 产品 | 如果您的组织使用的 Workfront Select 或 Prime 包不包含 Workfront 自动化和集成,则必须单独购买 Adobe Workfront Fusion。 |
有关此表中信息的更多详细说明,请参阅文档中的访问权限要求。
有关 Adobe Workfront Fusion 许可证的详细信息,请参阅 Adobe Workfront Fusion 许可证。
创建JWT连接
该模块需要JWT连接。 该连接存储签名材料,因此密钥或私钥不必显示在场景中。
在Fusion中创建JWT连接
-
添加HTTP > 向方案发出JWT请求模块。
-
单击 连接 字段旁边的添加。
-
配置连接字段:
table 0-row-2 1-row-2 2-row-2 layout-auto html-authored no-header 连接名称 输入连接名称。 算法 选择连接的签名算法。
HS256HS384HS512RS256RS384RS512PS256PS384PS512ES256ES384ES512
机密 输入签名密钥。
- 对于
HS*算法,请使用共享机密字符串。 - 对于
RS*、PS*和ES*算法,请使用PEM编码的私钥。
-
单击 继续 以创建连接并返回模块。
HTTP > 发出JWT请求模块及其字段
在配置HTTP > 发出JWT请求模块时,Adobe Workfront Fusion会按照它们在模块UI中的显示顺序显示以下列出的字段。 模块中的加粗标题表示必填字段。 除非选择显示高级设置,否则标记为高级的字段将隐藏。
如何构建令牌
- 模块将收集JWT有效负荷(声明)字段中的声明。
- 保留声明,如
费用,iat,和nbf转换为NumericDate值。 - 模块应用签名选项,并使用连接中的算法对令牌进行签名。
- 签名令牌放置在由标头名称定义的请求标头中。
- 如果设置了令牌类型,则模块会在令牌之前添加前缀。 例如,
Bearer eyJ…. - 请求已发送,处理响应的方式与标准HTTP > 发出请求模块相同。
已签名的令牌会自动在调试和错误日志中被掩盖,因此永远不会公开。
示例
连接
- 算法:
HS256 - 密钥:
my-shared-secret
模块设置
-
URL:
https://api.example.com/v1/orders -
方法:
GET -
JWT有效负荷(声明):
sub=service-account-42iss=make-integration
-
签名选项:
expiresIn=1h
-
标头名称:
Authorization -
令牌类型:
Bearer
结果
模块发送带有类似以下标题的请求:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
常见问题解答/疑问
为什么我的令牌过期得这么快?
您可能输入了expiresIn的空值,如3600。 jsonwebtoken库将纯数字解释为毫秒。 请改用单位字符串,如"1h"或"3600s"。
何时创建令牌?
每次运行模块时,模块都会签署新的JWT,而不是在创建连接时。 连接仅存储签名材料和算法,因此声明(如iat和exp)反映该模块运行的时间。
如果请求在同一模块执行中重试,Fusion会对这些重试尝试重新使用相同的签名令牌,而不是为每次尝试签名一个新令牌。 因此,非常短的expiresIn值可能会在重试发生之前过期,并导致重试发送已过期的令牌。 要避免此情况,请使用清除单位字符串,如"1h"或"3600s",并避免令牌生命周期过短。
我可以根据请求更改算法吗?
不可以。 算法由连接来固定。 如果需要不同的算法,请创建不同的JWT连接。
我能否在自定义标头中发送令牌?
可以。 将标头名称字段设置为自定义名称,但它不能包含点(.)。
我可以在没有Bearer的情况下发送原始令牌吗?
可以。 将令牌类型留空。
令牌是否在日志中可见?
不可以。 已签名的令牌在调试和错误日志中自动被掩盖。
jsonwebtoken库并镜像独立JWT应用程序的签名行为,因此相同的输入将生成与独立JWT应用程序相同的令牌。