firebase - 带有 Okta 身份提供程序 (IdP) 的 Google Cloud Storage
问题描述
我正在研究在不使用任何自定义 SDK 的情况下构建使用 Google Cloud Storage (GCP) 存储数据和 Okta 作为身份提供者 (IdP) 的 Web 应用程序的可行性。我仅限于客户端 JS 和服务器端 HTTP API 请求。在这些条件下,是否可以使用 Okta IdP 对 Google Cloud Storage (GCP) 请求进行身份验证?
火力基地
Google 的Cloud Storage 身份验证文章指出,“如果您正在设计一个应用程序来支持最终用户的多种身份验证选项,那么请使用 Firebase 身份验证......”。
Firebase 身份验证:“要将用户登录到您的应用程序,您首先从用户那里获取身份验证凭据。这些凭据可以是用户的电子邮件地址和密码,或者来自联合身份提供商的 OAuth 令牌。然后,您将这些凭据传递给Firebase 身份验证 SDK。然后我们的后端服务将验证这些凭据并向客户端返回响应。”
这个工作流程描述了我正在尝试做的事情;但是,在 Firebase 文档中没有提到 Okta 作为身份提供者。也就是说,使用自定义身份验证系统在 JavaScript 中使用 Firebase 进行身份验证意味着可以通过“自定义令牌”使用 Okta。
自定义令牌
Firebase 文档创建自定义令牌:“Firebase 允许您使用安全的 JSON Web 令牌 (JWT) 对用户或设备进行身份验证,从而让您完全控制身份验证。您在服务器上生成这些令牌,将它们传递回客户端设备,然后使用他们通过 signInWithCustomToken() 方法进行身份验证。[...] 自定义令牌是签名的 JWT,其中用于签名的私钥属于 Google 服务帐户。”
Okta 开发人员文档使用私钥构建 JWT:“如果您将客户端配置为使用 private_key_jwt 客户端身份验证方法,那么您希望使用 RSA 或 ECDSA 算法(RS256、RS384、 RS512、ES256、ES384、ES512)。”
结论
似乎可以使用从 Okta 检索到的自定义 JSON Web 令牌来验证向 GCP 发出的请求;但是,尚不清楚是否可以在不使用服务器端 SDK 的情况下在 Firebase 中对自定义 JWT 进行身份验证。
我可以编写一个中间件服务来充当 Firebase SDK 的前端;然而,这是一个复杂的解决方案,它增加了开发时间,产生了额外的故障点,并使操作维护更加困难。
解决方案
推荐阅读
- python - 逐行(axis = 0)将函数应用于 Pandas 数据框以创建四个新列
- mysql - 我需要从关系平板电脑中选择基于 2 个寄存器的结果。我怎么做?
- xsl-fo - 如何在表格中的单个单元格内将某些文本居中对齐,将某些文本右对齐
- javascript - 使用 svg 创建和动画两个正弦波路径并将它们链接到不同的对象
- python - 如何用数字划分每一列并一步添加最后一列的值
- ruby-on-rails - 在 Rails 生产环境中过滤错误报告
- android - 更改android按钮上的背景颜色
- node.js - 在 req 对象中暴露用户对象
- jenkins - Selenium 脚本如何在公司内部执行?
- ruby-on-rails - Capistrano 部署期间 nil:NilClass 的 Carrierwave 未定义方法“[]”