自定义OIDC Provider对接Firebase:JWT缺失字段排查求助
解决Firebase解析自定义OIDC ID Token报错“Unable to parse the ID Token”的问题
核心问题分析
你的JWT在Header和Payload的格式/字段上不符合Firebase的OIDC ID Token要求,具体问题如下:
1. Header字段错误
kid字段不能为null:Firebase需要通过kid(密钥ID)找到对应公钥来验证签名,必须设置为你Laravel OIDC Provider使用的密钥的唯一ID- Header不应包含
sub字段:sub是用户唯一标识,属于Payload的标准字段,不该出现在Header中
2. Payload字段错误
exp和iat必须是整数时间戳:当前这两个字段是浮点数(带小数),Firebase要求必须是Unix时间戳的整数形式(秒数)nonce字段处理不当:如果不需要使用nonce,应该直接移除该字段,而不是设为null- 缺少推荐的用户信息字段:虽然不是强制,但Firebase推荐包含
email、email_verified等字段,帮助完善用户身份信息
修正后的JWT示例
修正后的Header
{ "typ": "JWT", "alg": "RS256", "kid": "your-actual-key-id" }
修正后的Payload
{ "iss": "https://dev.my.fusestudio.net", "sub": "1", "aud": "9b7014ad-aca6-466f-be3c-bab9140d3697", "exp": 1709153246, "iat": 1709152646, "jti": "c0e3aabcf7064d795f67fc05d4c6d7b2284bb6ee5d2bf0213e9c7defa1f87e653e03a98fe6fa3448", "auth_time": 1709152638, "email": "user@your-domain.com", "email_verified": true }
额外验证步骤
- 确认Laravel OIDC Provider的OIDC发现端点(
/.well-known/openid-configuration)能正确返回jwks_uri,且该URI可被Firebase访问 - 检查Firebase控制台中配置的OIDC Provider的
Issuer值,必须和JWT中iss字段完全一致(注意大小写、结尾是否带斜杠等细节) - 确保
aud字段值为Firebase项目对应的Client ID,或你在OIDC Provider中配置的Client ID
内容的提问来源于stack exchange,提问作者selfsimilar
相关产品推荐
相关产品推荐

