我一直在努力签署jwt,我不熟悉苹果在WWDC上提供的ruby文件。代码如下:
require "base64"
require "jwt"
ISSUER_ID = "your-ID"
KEY_ID = "your-KeyID"
private_key = OpenSSL::PKey.read(File.read())
token = JWT.encode(
{
iss: ISSUER_ID,
exp: Time.now.to_i + 20 * 60,
aud: "appstoreconnect-v1"
},
private_key,
"ES256",
header_fields={
kid: KEY_ID }
)
puts token
当我在终端上运行它时,代码一直给我这个错误:
我的目标很简单,我只是想从GET API返回一些数据,但我正在与Postman上的401错误作斗争。
1条答案
按热度按时间tjjdgumg1#
根据你发布的截图,你的代码中有一个语法错误。
在您的代码示例中还有一个错误或配置错误。
在ruby中最常用于编码/解码JWT的gem是here;这是你在你的例子中使用的gem(通过
require "jwt"
)在那个页面上有很多例子你可以参考,但是如果你仔细阅读自述文件,你会注意到他们提到你只能使用kid
和RSA
,而你在你的例子中没有使用RSA
。试试这个:
这里有一个使用JWK与
kid
和RSA
算法的链接。在同一页面上搜索
ecdsa_key
,以获得ES256
的示例(您将找到我上面发布的示例)。查看WWDC文档中的原始示例可能有助于为正确的配置提供额外的上下文,但我不确定在哪里可以找到该文档。如果它是公开的,你可以链接到它,我可以跟进。