使用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令牌。

+0

虽然这并发生在不改变认证码的情况下。我想我必须在服务器上分别处理每个案例。 –