Firebase JWT 身份验证(自定义 JWT)
您可以配置 自定义JSON web token 身份验证提供者 ,以对您使用 Firebase 身份验证 管理的用户进行身份验证。
开始之前
使用“Firebase 身份验证”需要执行以下操作:
一个配置了身份验证的 Firebase 项目。要了解详情,请参阅 Firebase 身份验证 文档。
一个尚未使用自定义 JWT 身份验证的 App Services App。要了解如何创建新的 App Services App,请参阅创建应用。
如果使用命令行界面,则需要在本地系统上安装 App Services CLI,然后进行身份验证。
如果使用 Admin API,则需要 MongoDB Atlas Admin API 公钥/私钥对。API 密钥必须具有项目所有者权限。
配置自定义 JWT 身份验证提供程序
您可以从用户界面或通过直接使用 CLI 或 Admin API 修改底层配置文件来配置自定义 JWT 身份验证。从下面选择您首选的方法。
在左侧导航菜单中,单击 Authentication 。 然后单击Authentication Providers标签页并选择Custom JWT提供商。
现在,您可以配置自定义 JWT 身份验证提供者以便与您的 Firebase 项目配合使用。
单击切换,启用提供程序。
将 Verification Method 设置为 Use a JWK URI。为 JWK URI 指定以下 URL:
https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com 定义 Metadata Fields 以将 Firebase JWT 中的数据映射到相应的 App Services 用户账户。
所有元数据字段都不是必填字段。不过您可能会发现,它们有助于您将用户信息从 Firebase JWT 获取到自己的 App 中。
以下是从 Firebase JWT 到 App Services 用户的映射。您可以将这些映射按原样添加到 UI 中的表中,也可以按照元数据字段文档来自由修改映射。
路径字段名称firebase.identities.emailemailsfirebase.sign_in_providersignInProvideruser_id用户 IDemail_verifiedemailVerified电子邮件电子邮件将Audience 设置为您的 Firebase 项目ID。
重要
您必须将受众设置为 Firebase 项目 ID
您必须 设置 Audience 才能使用您的 Firebase 项目 ID 作为自定义 JWT 提供程序,即使它在 UI 中标记为可选也是如此。
单击 Save 并部署更改。
运行以下命令,将 --remote
的值替换为应用的 客户端应用程序ID。 这会下载应用的最新配置文件的本地副本并导航到配置文件目录,该目录使用与应用相同的名称。
appservices pull --remote "myapp-abcde" cd myapp
将新的自定义JSON web token身份验证提供者添加到应用的 /auth/providers.json
文件中。 使用以下配置作为模板,将audience
值替换为您的 Firebase 项目ID。 您可以按原样使用提供的metadata_fields
,也可以按照元数据字段文档随意修改映射。
{ "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" } ] }'
使用 Firebase JWT 登录
将自定义 JWT 身份验证提供者配置为使用 Firebase 身份验证后,您可以使用 Firebase JWT 登录到您的 App Services 应用。
将用户登录到 Firebase。要了解如何操作,请参阅适用于您的平台和编程语言的相关 Firebase SDK 文档。
获取用户的 Firebase JWT。要了解如何操作,请参阅 Firebase 文档中的检索客户端上的 ID 令牌。
使用 Firebase JWT,通过 Atlas App Services 进行身份验证。您可以通过 HTTP 启动会话或使用 SDK 登录。要了解如何操作,请参阅您的 SDK 文档: