无登录认证应用的Firestore只读安全规则限制方案咨询
解决Firestore无认证应用的只读权限限制问题
核心思路
你的应用没有注册登录机制,无法通过常规用户认证限制访问,验证请求的SHA-1证书指纹是可行方案——Firebase可识别你应用请求携带的签名指纹,以此判断是否允许访问。
具体操作步骤
1. 获取应用的SHA-1指纹
- Android应用:
在Android Studio打开右侧Gradle面板,展开项目→Tasks→android→双击signingReport,在底部Run窗口找到SHA1对应字符串并复制保存。 - iOS应用:
打开Xcode,选择项目目标→Signing & Capabilities→查看Signing Certificate,通过钥匙串访问工具找到对应证书,右键选“获取信息”,在“指纹”栏提取SHA-1值(去掉空格)。
2. 将SHA-1添加到Firebase项目
登录Firebase控制台进入你的项目:
- 点击左侧菜单
项目设置→常规标签页。 - 在
你的应用区域找到对应平台应用,点击添加指纹,粘贴复制的SHA-1值后保存。
3. 修改Firestore安全规则
替换现有规则,用request.app验证请求来源的应用指纹:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { // 仅允许指定SHA-1指纹的应用进行只读访问 allow read: if request.app != null && request.app.signing_certificates.sha1.contains("你的SHA-1指纹字符串"); // 保留原认证写入规则(按需调整) allow write: if request.auth != null; } } }
注意:把规则中的
你的SHA-1指纹字符串替换为实际获取的SHA-1值,无需添加空格或冒号。若有多个环境(开发/正式版),可传入指纹数组:contains(["指纹1", "指纹2"])
关键说明
这种方式仅限制官方打包签名的应用,若应用被反编译重签名可能被绕过,但足以应对普通场景的安全需求。
内容的提问来源于stack exchange,提问作者mikegrep
相关产品推荐
相关产品推荐

