Docs 菜单
Docs 主页
/ /
Atlas App Services
/ /

Firebase JWT 身份验证(自定义 JWT)

在此页面上

  • 开始之前
  • 配置自定义 JWT 身份验证提供程序
  • 使用 Firebase JWT 登录

您可以配置 自定义 JWT 身份验证提供者 ,以对您使用 Firebase 身份验证管理的用户进行身份验证。

使用“Firebase 身份验证”需要执行以下操作:

  • 一个配置了身份验证的 Firebase 项目。要了解详情,请参阅 Firebase 身份验证 文档。

  • 一个尚未使用自定义 JWT 身份验证的 App Services App。要了解如何创建新的 App Services App,请参阅创建应用

  • 如果使用命令行界面,则需要在本地系统上安装 App Services CLI,然后进行身份验证。

  • 如果使用 Admin API,则需要 MongoDB Atlas Admin API 公钥/私钥对。API 密钥必须具有项目所有者权限。

您可以从用户界面或通过直接使用 CLI 或 Admin API 修改底层配置文件来配置自定义 JWT 身份验证。从下面选择您首选的方法。

在左侧导航菜单中,单击 Authentication 。然后单击Authentication Providers标签页并选择Custom JWT提供程序。

现在,您可以配置自定义 JWT 身份验证提供者以便与您的 Firebase 项目配合使用。

  1. 单击切换,启用提供程序。

  2. Verification Method 设置为 Use a JWK URI。为 JWK URI 指定以下 URL:

    https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com
  3. 定义 Metadata Fields 以将 Firebase JWT 中的数据映射到相应的 App Services 用户账户。

    所有元数据字段都不是必填字段。不过您可能会发现,它们有助于您将用户信息从 Firebase JWT 获取到自己的 App 中。

    以下是从 Firebase JWT 到 App Services 用户的映射。您可以将这些映射按原样添加到 UI 中的表中,也可以按照元数据字段文档来自由修改映射。

    路径
    字段名称
    firebase.identities.email
    emails
    firebase.sign_in_provider
    signInProvider
    user_id
    用户 ID
    email_verified
    emailVerified
    电子邮件
    电子邮件
  4. Audience 设置为您的 Firebase 项目 ID。

    重要

    您必须将受众设置为 Firebase 项目 ID

    必须 设置 Audience 才能使用您的 Firebase 项目 ID 作为自定义 JWT 提供程序,即使它在 UI 中标记为可选也是如此。

  5. 单击 Save 并部署更改。

运行以下命令,将 --remote的值替换为您应用的客户端应用 ID。这会下载应用最新配置文件的本地副本并导航到配置文件目录,该目录与应用使用相同的名称。

appservices pull --remote "myapp-abcde"
cd myapp

将新的自定义 JWT 身份验证提供者添加到应用的/auth/providers.json文件中。使用以下配置作为模板,将audience值替换为您的 Firebase 项目 ID。您可以按原样使用提供的metadata_fields ,也可以按照元数据字段文档随意修改映射。

/auth/providers.json
{
"custom-token": {
"name": "custom-token",
"type": "custom-token",
"disabled": false,
"config": {
"audience": ["<Your Firebase Project ID>"],
"jwkURI": "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com",
"useJWKURI": true
},
"secret_config": {
"signingKeys": []
},
"metadata_fields": [
{
"required": false,
"name": "firebase.identities.email",
"field_name": "emails"
},
{
"required": false,
"name": "firebase.sign_in_provider",
"field_name": "signInProvider"
},
{
"required": false,
"name": "user_id",
"field_name": "userId"
},
{
"required": false,
"name": "email_verified",
"field_name": "emailVerified"
},
{
"required": false,
"name": "email",
"field_name": "email"
}
]
}
}

将更改保存到/auth/providers.json 。 然后,推送更新的配置文件以部署您的应用:

appservices push

使用创建身份验证提供者端点将新的自定义 JWT 身份验证提供者添加到您的应用程序。

使用以下配置作为模板。确保:

  • 指定应用程序的$PROJECT_ID$APP_ID

  • Authorization标头中包含 Admin API 访问令牌。

  • 将请求正文中的audience值替换为您的 Firebase 项目 ID。

您可以按原样使用提供的metadata_fields ,也可以按照元数据字段文档随意修改映射。

curl "https://services.cloud.mongodb.com/api/admin/v3.0/groups/$PROJECT_ID/apps/$APP_ID/auth_providers" \
-X "POST" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "custom-token",
"type": "custom-token",
"disabled": false,
"config": {
"audience": ["<Your Firebase Project ID>"],
"jwkURI": "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com",
"useJWKURI": true
},
"secret_config": {
"signingKeys": []
},
"metadata_fields": [
{
"required": false,
"name": "firebase.identities.email",
"field_name": "emails"
},
{
"required": false,
"name": "firebase.sign_in_provider",
"field_name": "signInProvider"
},
{
"required": false,
"name": "user_id",
"field_name": "userId"
},
{
"required": false,
"name": "email_verified",
"field_name": "emailVerified"
},
{
"required": false,
"name": "email",
"field_name": "email"
}
]
}'

将自定义 JWT 身份验证提供者配置为使用 Firebase 身份验证后,您可以使用 Firebase JWT 登录到您的 App Services 应用。

  1. 将用户登录到 Firebase。要了解如何操作,请参阅适用于您的平台和编程语言的相关 Firebase SDK 文档

  2. 获取用户的 Firebase JWT。要了解如何操作,请参阅 Firebase 文档中的检索客户端上的 ID 令牌

  3. 使用 Firebase JWT,通过 Atlas App Services 进行身份验证。您可以通过 HTTP 启动会话或使用 SDK 登录。要了解如何操作,请参阅您的 SDK 文档:

后退

自定义 JWT

来年

Okta(自定义 JWT)