google-app-engine - 在烧瓶应用中使用 Google 服务帐户进行身份验证并在 Google App Engine 上部署
问题描述
以下是我的要求。
- 开发一个烧瓶应用程序。
- 在应用程序的 firebase 中使用集合。
- 使用标准服务帐户在 Google App Engine 上部署此应用
我做了什么。
- 创建了一个服务帐户
- 下载了对应的凭证json;我称它为 key.json
- 写了一个main.py
cred = credentials.Certificate('key.json') default_app = initialize_app(cred) db = firestore.client() user_ref = db.collection_group('Users') @app.route('/', methods=['GET']) def home(): return "<h1>Welcome to my first app</h1>" @app.route('/users', methods=['GET']) def getUsers(): try: result = [user.to_dict() for user in user_ref .stream()] return jsonify(result), 200 except Exception as e: result = { "message:"failed"} return jsonify(result), 500
我已经在本地进行了测试,也部署在了 Google App Engine 上。
在这两种情况下,key.json 都与代码位于同一目录中。我已经验证,如果这个 key.json 被修改为存储错误的数据,那么 /users 端点将不起作用并给我一个 500 错误。
到现在为止还挺好。我想知道这是否是正确的方法。
- 我希望 key.json 身份验证甚至适用于根/端点。即,如果用户提供了一个有效的 key.json,那么只有
Welcome to my first app
应该显示。否则,Unauthorized user
需要显示消息。
解决方案
正如@Gaefan 和@DishantMakwana 以及本文档所述:
API 密钥仅标识应用程序,不需要用户身份验证。访问公共数据就足够了。
因此,为了验证/授权您的用户,您应该重新考虑您的策略。我建议您按照最终用户身份验证文档中的说明进行操作。
推荐阅读
- html - 填充高度元素内的滚动元素
- jquery - jQuery class filtering and css transform delaying/blocking animation in section below it
- java - 如何在 SpringBoot 的 AuthenticationManagerBuilder 中设置范围子树
- r - 比较 5 k-mer 向量并找到唯一的向量
- java - 在多租户环境中发送电子邮件
- pandas - Pandas 获取数字分类数据的 dummies()
- android - 运行“ionic cordova build android”命令时如何解决无效或意外令牌问题?
- php - 在 Eloquent 关系中隐藏外国 id 列
- java - 如何将此嵌套的 json 字符串转换为 java 对象?
- perl - 如何动态创建替换?