Я пытаюсь использовать API DeviceCheck от Apple.Кажется, я не могу составить запрос, который не выходит из строя с 401 Unable to verify authorization token
. Я пробовал несколько небольших изменений.
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())
Я беру выходные данные этого скретч-файла и вставляю его здесь:
curl -i -H "Authorization: Bearer <Output>" -X POST --data-binary @ValidQueryRequest.json https://api.development.devicecheck.apple.com/v1/query_two_bits
в соответствии с рекомендациями Документация Apple .
Является ли общая структура этого права?Я пытаюсь следовать этому уроку , который подразумевает это структурирование:
Но эта реклама от Apple:
Каждый запрос, который вы отправляете на запрос и обновляете конечные точки, должен содержать заголовок авторизации, который содержит ваш ключ аутентификации.Ключ аутентификации должен использовать алгоритм ES256 и быть в формате Web-токена JSON в кодировке Base 64 URL.Если ваш токен не использует этот формат, вы получите ошибку HTTP BAD_AUTHENTICATION_TOKEN.
Предполагается, что вместо подписи с использованием ключа мой запрос должен "содержать мой ключ аутентификации".