使用Firebase身份验证不一致的JWT令牌负载
问题描述:
使用Firebase Web SDK 4.2.0对用户进行身份验证会在JWT令牌内部提供两种不同的负载。有时它包含此:使用Firebase身份验证不一致的JWT令牌负载
{
"azp": "...",
"aud": "...",
"sub": "...",
"email": "...",
"email_verified": true,
"at_hash": "...",
"iss": "accounts.google.com",
"iat": 1502712944,
"exp": 1502716544
}
等次:
{
"iss": "https://securetoken.google.com/{FIREBASE_PROJECT_ID}",
"name": "...",
"picture": "...",
"aud": "...",
"auth_time": 1502642892,
"user_id": "...",
"sub": "...",
"iat": 1502711791,
"exp": 1502715391,
"email": "...",
"email_verified": true,
"firebase": {
"identities": {
"google.com": [
"{GOOGLE_USER_ID}"
],
"email": [
"..."
]
},
"sign_in_provider": "google.com"
}
}
这到底是怎么回事?由于我在进行服务器端验证(在Go中,不使用Admin SDK),如果响应具有一致的格式,这将有所帮助。
答
第一个令牌是Google ID令牌。第二个是Firebase ID令牌。您可以从发行人(iss)得知。您似乎在某些情况下会将Google ID令牌发送给您的服务器,而在其他情况下则会向您的服务器发送Firebase ID令牌。
虽然这并发生在不改变认证码的情况下。我想我必须在服务器上分别处理每个案例。 –