【问题标题】:Facing issue while generating Authorization bearer token for DeviceCheck API in swift在 swift 中为 DeviceCheck API 生成授权不记名令牌时面临问题
【发布时间】:2019-10-18 22:31:20
【问题描述】:

我正在处理DeviceCheck。要生成 JSON 网络令牌,我正在使用 SwiftJWT 库。但我不知道如何为DeviceCheck 生成JWT

代码:

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(header: SwiftJWT.Header(typ: Optional("JWT"), alg: 可选(“ES256”),jku:无,jwk:无,孩子:可选(“KEY_ID”), x5u:无,x5c:无,x5t:无,x5tS256:无,cty:无,暴击:无), 声明:SwiftiOSDeviceCheck.ViewController.(未知上下文在 $104614dbc).(未知上下文 $104614e28).MyClaims(iss: “ISS_ID”,iat:2019-06-03 11:55:53 +0000,exp:2019-06-03 11:55:53 +0000))

从 API 我得到以下邮递员的响应:

无法验证授权令牌

我该如何解决这个问题?

【问题讨论】:

    标签: ios swift devicecheck


    【解决方案1】:

    我找到了这个问题的答案。我使用 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
        }
    

    【讨论】:

    • CupertinoJWS 不支持 swift 5。如何在 XCode 10 和 swift 5 中添加这个库
    • 你在使用 pod 吗?我在 XCode 10 和 swift 3 中添加了源文件。但几天前,我在 Xcode 11 中将整个项目转换为 swift 5 并且工作正常。
    • 是的,我正在使用 pod。你愿意和我分享转换后的源文件吗
    • 是的,我会的。另外,尝试使用源文件而不是 pod。
    • 感谢您的友好回复。我设法使用 SWIFTJWT pod 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-08-22
    • 2018-10-31
    • 2017-02-20
    • 1970-01-01
    • 2018-09-22
    • 2021-01-01
    • 1970-01-01
    • 2020-07-09
    相关资源
    最近更新 更多