我收到一条错误消息:
自定义令牌格式不正确。请检查文档。
当我用消息
检查JWT中的令牌时出错无效的签名。
我已经不知道令牌中的哪些支票有效。
请引导我以正确的方式解决问题。谢谢!
我按照此处描述的步骤操作:Firebase。 尝试为Firebase的方法 Auth.auth()。signIn(withCustomToken:)生成自定义令牌。使用框架SwiftyJWT。
到期时间 晚于 发布时间 ,时间为3600秒。自UNIX时代以来,这些值以秒为单位
添加自定义字段,因为SwiftyJWT仅具有 jwtId ,但是我需要 uid 。我的 uid 长度在1-36个字符之间
使用RS256算法
下面添加一些代码:
let bodyKey =“ -----开始使用RSA私有密钥----- \ n'some-generate-key''\ n——结束RSA私有密钥-----”
var有效负载= JWTPayload()
有效载荷。 发行人 =“ firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com”
有效载荷。 主题 =“ firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com”
有效载荷。 issueAt = Int(Date()。timeIntervalSince1970)
有效载荷。 到期 = payload.issueAt! + 3600
有效载荷。 受众 =“ https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit”
让someUID =“ dfsgdfg4546ysg45t67” 有效负载。 customFields = [“ uid”:EncodableValue(value:someUID)]
让privateKey =尝试吗? RSAKey(base64String:bodyKey,keyType:.PRIVATE)
guard let key = privateKey else {return“”}
让 jwtWithKeyId = JWT(有效载荷:有效载荷,算法:.rs256(密钥))
在JWT中进行检查并获得结果:
{
"alg": "RS256",
"typ": "JWT"
}
{
"exp": 1554135867,
"iat": 1554132267,
"iss": "firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com",
"uid": "dfsgdfg4546ysg45t67",
"sub": "firebaseserviceaccount@'my-project-id-firebaseApp'.iam.gserviceaccount.com",
"aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit"
}
填写“ RSA PRIVATE KEY”和“ RSA PUBLIC KEY”字段。但是出现错误信息“ Invalid Signature”。
答案 0 :(得分:0)
Firebase令牌无法通过SwiftyJWT创建。需要通过Firebase Admin Auth SDK创建Firebase自定义令牌。该链接显示了有关如何创建令牌服务器端的说明,然后将其传递给客户端进行验证。此功能可用于Node.js,Java,python,go和C#。