JWT Token生成方案
我当时找TestFlight的自动化方案找了半天没有一点点文章介绍,所以我就写一下。
以下是Api的文档,然后Api里面的Token怎么生成本文来赘述一下。
AppStoreConnect Api
生成一个ApiKey
- 管理员身份的账号登陆 AppStoreConnect
- 打开
用户和访问,选择API Keys - 点击
生成API Key或者+按钮 - 输入一个当前
key的别名 - 选择
key的规则 - 点击生成
- 然后就会有一个名称,keyid,下载链接和其他信息。
- 点击下载 (这个东西很宝贵,不要外传)
生成一个Request Token
- 生成一个
JWT Header - 生成一个
JWT Payload - 生成一个
JWT
生成一个 JWT Header
- Key id :在
用户和访问->API Keys里面
| Header Field | Value |
|---|---|
| alg - 加密类型 | ES256 |
| kid - Key id | {KeyID} |
| typ - Token 类型 | JWT |
{
"alg": "ES256",
"kid": "2X9R4HXF34",
"typ": "JWT"
}
生成JWT Payload
- issuer id:在
用户和访问->API Keys里面
| Payload Field | Value |
|---|---|
| iss - Issuer id | {issue id} |
| exp - 过期时间 | {exp time} |
| aud - Audience | appstoreconnect-v1 |
{
"iss": "57246542-96fe-1a63-e053-0824d011072a",
"exp": 1528408800,
"aud": "appstoreconnect-v1"
}
生成一个 JWT
- Private Key:ApiKey中有个下载链接,下载下来的
AuthKey_xxxx.p8文件
使用上面生成的 jwt header , jwt payload ,Private key使用gen_jwt_s.rb生成一个
生成方案如下
sudo gem install jwt
ruby gen_jwt_s.rb
然后按照指引一步步操作即可
- 输入
kid - 输入
issueid - 输入
AuthKey_xxxx.p8文件地址
这个是我用rb写的一个简单的demo,想获得其他语言的支持请看JWT.io
使用 Request
替换以下的[signed token]为生成的token即可使用
curl -v -H 'Authorization: Bearer [signed token]'
"https://api.appstoreconnect.apple.com/v1/apps"