首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为苹果的DeviceCheck API生成一个JWT

为苹果的DeviceCheck API生成一个JWT
EN

Stack Overflow用户
提问于 2019-06-07 16:47:14
回答 1查看 1.1K关注 0票数 1

我正在尝试使用来自苹果的DeviceCheck API。我似乎无法用401 Unable to verify authorization token构建一个不会失败的请求,我尝试了一些小的变化。

代码语言:javascript
复制
import java.security.KeyFactory
import java.security.spec.PKCS8EncodedKeySpec
import java.util.Base64

import io.jsonwebtoken.{Jwts, SignatureAlgorithm}

val deviceCheckPrivateKey = "<Key in plaintext without the key-guards>"
val privateKey = KeyFactory.getInstance("EC").generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder.decode(deviceCheckPrivateKey)))

val builder = Jwts
  .builder()
  .setHeaderParam("kid", "<key-id-from-file>")
  .signWith(SignatureAlgorithm.ES256, privateKey)
  .claim("iss", "<team-id>")
  .claim("iat", System.currentTimeMillis())

println(builder.compact())

我获取这个划痕文件的输出,并在这里插入它:

代码语言:javascript
复制
curl -i -H "Authorization: Bearer <Output>" -X POST --data-binary @ValidQueryRequest.json https://api.development.devicecheck.apple.com/v1/query_two_bits 

正如苹果的文档推荐的那样。

这样做的总体结构正确吗?我试图遵循本教程,这意味着这种结构:

但苹果的这段话是:

发送到查询和更新端点的每个请求都必须包括包含身份验证密钥的授权头。身份验证密钥必须使用ES256算法,并且必须采用Base64URL编码的JSON令牌格式。如果令牌不使用此格式,则会收到BAD_AUTHENTICATION_TOKEN HTTP错误。

建议不要使用密钥进行签名,我的请求应该“包含我的身份验证密钥”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 14:50:20

根据:https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6

代码语言:javascript
复制
val builder = Jwts
  .builder()
  .setHeaderParam("kid", "<key-id-from-file>")
  .signWith(SignatureAlgorithm.ES256, privateKey)
  .claim("iss", "<team-id>")
  .claim("iat", System.currentTimeMillis()) // <--- Should be seconds, not milliseconds
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56498350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档