我正在研究DeviceCheck
。要生成JSON
网络 token ,我正在使用SwiftJWT
库。但是我不知道如何为JWT
生成DeviceCheck
。
代码:
let contents = try String(contentsOfFile: filepath)
let headers = Header(kid: key_id)
struct MyClaims: Claims {
var iss: String
var iat: Date
var exp: Date
}
let jwt = JWT(header: headers, claims: MyClaims(iss: iss_id, iat: Date(timeIntervalSinceNow: 3600), exp: Date(timeIntervalSinceNow: 3600)))
let privateKey = contents.data(using: .utf8)!
let rsaJWTEncoder = JWTEncoder(jwtSigner: JWTSigner.es256(privateKey: privateKey))
var jwtString = try rsaJWTEncoder.encodeToString(jwt)
在打印
JWT
时,我得到以下响应:JWT(标题:SwiftJWT.Header(典型值:可选(“JWT”)),算法:
可选(“ES256”),jku:无,jwk:无,小子:可选(“KEY_ID”),
x5u:无,x5c:无,x5t:无,x5tS256:无,cty:无,暴击:无),
声明:SwiftiOSDeviceCheck.ViewController。(位于的未知上下文
$ 104614dbc)。(未知上下文为$ 104614e28).MyClaims(iss:
“ISS_ID”,日期:2019-06-03 11:55:53 +0000,到期日:2019-06-03 11:55:53
+0000))
从API我得到邮递员的回应如下:
无法验证授权 token
如何解决此问题?
最佳答案
我找到了这个问题的答案。我使用 CupertinoJWS 而不是 SwiftJWT 。
let jwt = JWT(keyID: keyID, teamID: teamID, issueDate: Date(), expireDuration: 60 * 60)
do {
let token = try jwt.sign(with: p8Key)
// Use the token in the authorization header in your requests connecting to Apple’s API server.
// e.g. urlRequest.addValue(_ value: "bearer \(token)", forHTTPHeaderField field: "authorization")
print("Generated JWT: \(token)")
return token
} catch {
// Handle error
}
关于ios - 快速生成DeviceCheck API的授权承载 token 时遇到的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56426171/