【发布时间】:2022-07-24 03:44:45
【问题描述】:
我正在尝试生成一个jwt 令牌以连接到 AppStore API。我正在使用jwt-dotnet 库来执行此操作。
Apple 要求使用 ES256,而 jwt-dotnet 要求使用公钥来完成这项工作。我只从 AppStore 下载了一个私钥。我该如何处理?
这是我的代码:
public static string GenerateAppStoreJwtToken()
{
var header = new Dictionary<string, object>()
{
{ "kid", "MY_VALUE" },
{ "typ", "JWT" }
};
var scope = new string[1] { "GET /v1/apps?filter[platform]=IOS" };
var payload = new Dictionary<string, object>
{
{ "iss", "MY_VALUE" },
{ "iat", DateTimeOffset.UtcNow.ToUnixTimeSeconds() },
{ "exp", DateTimeOffset.UtcNow.AddMinutes(20).ToUnixTimeSeconds() },
{ "aud", "appstoreconnect-v1" },
{ "scope", scope }
};
IJwtAlgorithm algorithm = new ES256Algorithm(???); // What am I going to use here?
IJsonSerializer serializer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
var token = encoder.Encode(header, payload, privateKey);
return token;
}
【问题讨论】:
-
您可以从私钥生成公钥。但是你确定你有私人的吗?因为它通常不会在 API 场景中给出。
-
我从 AppStore 下载了一个
p8文件,该文件包含私钥。 -
你应该能够生成一个公共的...在线检查工具