首页 > 解决方案 > 带有 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 的前端;然而,这是一个复杂的解决方案,它增加了开发时间,产生了额外的故障点,并使操作维护更加困难。

标签: firebasejwtokta

解决方案


推荐阅读