java - 使用 Firebase 时出现 SunCertPathBuilderException
问题描述
我有一个在 Glassfish 服务器上与 Jersey 一起运行的 Java Rest API,我使用 Firebase Auth 对我的用户进行身份验证。所以我使用 Firebase Admin SDK 来验证令牌FirebaseAuth.getInstance().verifyIdToken(idToken)
但它会引发以下错误:
sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
我通过调用正确初始化我的应用程序:
FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccountStream)).build();
使用 serviceAccountStream 向我的服务帐户 JSON 文件添加 InputStream。
编辑:我在使用 Firebase 的身份验证模拟器和其他 Firebase 服务(如 Firestore)时遇到了同样的问题,这很奇怪
解决方案
问题来自您使用的旧库。以下代码在 SpringBoot 2.5 设置上运行良好:
try {
InputStream serviceAccount credStream = getClass().getResourceAsStream(credsPath);
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(credStream))
.setDatabaseUrl(databaseURL)
.build();
FirebaseApp.initializeApp(options);
} catch (Exception e) {
logger.error(e.getMessage());
} finally {
...
}
如果无法升级库,则需要将服务器证书添加到 trustStore。请在此处查看步骤:Java:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效认证路径
推荐阅读
- sql - 没有公共列的 SQL/Power BI 联接
- angular - 当从父级触发更改时,Angular 子组件视图不会更新
- java - 使用 JsonPath 读取嵌套数组属性
- c# - 每个循环内部的 Else if 语句 - C#
- django - Django中人类可读文本的字符串键
- javascript - 为什么 whatsapp 不按应有的方式读取我的 og:tags?
- electron - 在 vscode 扩展中需要 vscode
- amazon-web-services - 在 AWS 中解压缩大文件
- javascript - 防止拖动 D3 网络图节点移动 Vuejs 中的其他节点
- c - 如何使用纯 C 检索自动化元素的控件类型