【发布时间】:2017-12-24 20:25:14
【问题描述】:
我正在使用 Firebase 数据库,并为测试设置了一条安全规则
".write":false
读取总是正确的。
现在,当我在 android 应用程序中使用客户端 SDK 编写任何内容时,数据库中的任何地方都按预期拒绝写入。
但是,当我使用经过身份验证的 REST API 补丁请求在任何地方写入任何内容时,它总是会成功。
令牌生成如下:
//googleCredAhmedabad and scopedAhmedabad are GoogleCredential objects
InputStream is = getServletContext().getResourceAsStream("/WEB-INF/firebaseauth/myserviceaccountfile.json");
googleCredAhmedabad = GoogleCredential.fromStream(is);
scopedAhmedabad = googleCredAhmedabad.createScoped(
Arrays.asList(
"https://www.googleapis.com/auth/firebase.database",
"https://www.googleapis.com/auth/userinfo.email"
)
);
scopedAhmedabad.refreshToken();
String myToken = scopedAhmedabad.getAccessToken();
是否(使用服务帐户生成具有足够范围的凭据)经过身份验证的 REST API 调用胜过安全规则?
【问题讨论】:
-
也许安全规则只适用于他们的客户端(android和ios)和web端sdks
标签: android firebase firebase-realtime-database firebase-authentication