使用JWT流配置和使用贵组织的自定义OAuth 2应用程序

要与Workfront集成并允许您的客户端应用程序代表用户与Workfront进行通信,您必须:

  • 创建OAuth2应用程序
  • 创建公钥证书
  • 创建JSON Web令牌(JWT)

创建OAuth2应用程序

有关创建OAuth2应用程序的说明,请参阅为Workfront集成创建OAuth2应用程序中的使用服务器身份验证(JWT流)创建OAuth2应用程序

NOTE
您一次最多可以拥有10个OAuth2应用程序。

创建公钥证书

JWT必须经过签名并进行base-64编码以包含在访问请求中。 JWT库提供了用于执行这些任务的功能。

必须使用数字签名证书的私钥对令牌进行签名。 如果这样做,您可以使用任何关联证书的私钥来签署您的JWT。

使用的算法是RS256(使用SHA-256的RSA签名)。 这是一种非对称算法,使用公钥/私钥对。 身份提供者具有用于生成签名的私钥(密钥),并且JWT的消费者获得用于验证签名的公钥。

若要生成公钥,请执行以下操作中的​ 一个

  • 打开MacOS/Linux终端并执行以下命令,然后使用Workfront中OAuth2应用程序设置中的​ 添加公钥 ​按钮上传certificate_pub.crt

    code language-none
    openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout private.key -out certificate_pub.crt
    
  • 在Workfront中的OAuth2应用程序设置中使用​ 生成公钥/私钥对 ​按钮来生成RSA。

创建JSON Web令牌

用于服务帐户身份验证的JSON Web令牌需要一组特定的声明,必须使用有效的数字签名证书进行签名。 我们建议您使用其中一个公开可用的库或工具来构建JWT。

下表包含配置JWT令牌时可能需要的字段相关信息。

费用

必需。 到期参数是测量自01/01/1970 GMT以来的绝对时间的必需参数。 您必须确保过期时间晚于问题发生时间。 之后,JWT不再有效。

注意:我们建议您拥有一个生命周期非常短的令牌(几分钟),以便该令牌在转换为访问令牌后不久过期。 每次需要新的访问令牌时,都会签署和交换一个JWT。 这是一种更安全的方法。 我们不建议根据需要重复用于获取访问令牌的长效令牌。

iss
必需。 在OAuth2应用程序详细信息中,颁发者是您的客户ID。
sub
必需。 主题是在设置中创建公钥的用户ID。

交换JWT以检索访问令牌

  1. 发送POST请求到:

    code language-none
    https://yourdomain.my.workfront.com/integrations/oauth2/api/v1/jwt/exchange
    
  2. 请求正文应包含URL编码的参数,以及您的客户端ID、客户端密钥和JWT:

    code language-none
    client_id={client_id_value}&client_secret={client_secret_value}&jwt_token={base64_encoded_JWT}
    
recommendation-more-help
5f00cc6b-2202-40d6-bcd0-3ee0c2316b43