Ilj*_*lja 3 amazon-web-services firebase openid-connect firebase-authentication aws-appsync
我想使用 firebase auth 来保护我的 AWS AppSync graphql api,而不是 Cognito 之类的东西。这背后有几个原因,例如定价以及我们已经在使用其他一些 Firebase 服务。
我能看到 atm 的唯一可行的解决方案是以某种方式将 firebase 用户令牌传递到我的 AppSync graphql api 并通过 OpenID Conneect / OIDC 进行验证。
我无法弄清楚这一点,也找不到有关该主题的任何指南,因此想在这里询问是否可能,如果可以,是否可以提供任何示例或可能有用的完整参考资料?
以下是需要根据 OpenID 连接数据提供给 AppSync 的相关字段https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-appsync.OpenIdConnectConfig.html
这些是否存在用于 firebase 身份验证?
更新:我找到了一些有关 firebase 令牌验证的文档 https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_a_third-party_jwt_library
我相信以下 URL 需要用作 AppSync 中的 OpenID url 设置https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com
但是 AppSync 文档指出它们附加/.well-known/openid-configuration到此类 url,当我对上面的 googleapis url 执行此操作时,它会抛出 404。
AppSync 需要 OpenID Connect 提供商 (OP)。更具体地说,它想要 OP 的发行人;其余元数据是基于此检索的。来自 AppSync文档:
OPENID_CONNECT 授权
此授权类型强制执行 OIDC 兼容服务提供的 OpenID Connect (OIDC) 令牌。您的应用程序可以利用 OIDC 提供商定义的用户和权限来控制访问。
URL
Issuer是您向 AWS AppSync 提供的唯一必需的配置值(例如https://auth.example.com)。该 URL 必须可通过 HTTPS 寻址。AWS AppSync 附加 到颁发者 URL 并根据 OpenID Connect Discovery 规范/.well-known/openid-configuration找到 OpenID 配置https://auth.example.com/.well-known/openid-configuration
Firebase(主要)是一个中间件。尽管您可能有一个用户帐户驻留在 Firebase 中,但更典型的用例是将某些提供商(例如 Google 或 Microsoft)插入 Firebase。然后,您可以使用 Firebase API 执行各种操作,而无需了解底层提供程序的详细信息。
无论是在 Firebase 中充当中间件还是充当用户的身份存储,目前尚不清楚 Firebase 是否是符合 OIDC 的提供商。OpenID 发布 OIDC 一致性测试以及已认证的实体。后一个列表中唯一的 Google 实体是“Google 联合身份”。除了认证之外,Firebase 确实发布了一个签名的 JWT,根据他们的说法,它在道德上等同于id_tokenOIDC:
ID令牌验证
如果您的 Firebase 客户端应用与后端服务器通信,您可能需要识别服务器上当前登录的用户,以便您可以代表他们执行服务器端逻辑。您可以使用 ID 令牌安全地执行此操作,这些令牌是在用户登录 Firebase 应用时由 Firebase 创建的。
ID 令牌符合 OpenID Connect 规范,并包含用于识别用户的数据,以及一些其他配置文件和身份验证相关信息。您可以从自己的后端发送、验证和检查这些令牌。这使您可以安全地识别当前登录的用户并授权他们使用您自己的后端资源。
如果您创建 Firebase 项目,然后通过该项目进行身份验证并检查颁发的令牌,您将iss在令牌负载中看到 (Issuer) 键。它的值为https://securetoken.google.com/<Firebase projectId>,这是 AppSync 所需的 URL。
/.well-known/openid-configuration您可以通过连接https://securetoken.google.com/<Firebase projectId>生成的 URL 并对其执行 GET 操作来确认 OIDC 元数据可用。预期的响应应如下所示:
{
"issuer": "https://securetoken.google.com/<Firebase project id>",
"jwks_uri": "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com",
"response_types_supported": [
"id_token"
],
"subject_types_supported": [
"public"
],
"id_token_signing_alg_values_supported": [
"RS256"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |