我正在尝试使用连接到Firebase Cloud Firestore数据库的Express.js端点为我们的应用程序创建API。安全地对请求的信息进行响应的一个主要组成部分是身份验证,我们希望能够使其尽可能直接地传达给用户。例如,他们只需根据他们的请求发送API密钥。
我的问题是Firebase似乎提供的所有身份验证机制都要求客户端通过Firebase SDK进行身份验证,这对我们要求用户安装感到不舒服。
简而言之,他们是否可以通过任何方法要么在没有SDK的情况下创建Firebase令牌,要么让我们使用API密钥安全地对其进行身份验证?请注意,与我们的API的连接只能通过用户的后端完成,而不能通过前端客户端完成。
谢谢!
答案 0 :(得分:0)
请参阅:
Firebase通过允许您使用安全的JSON Web令牌(JWT)对用户或设备进行身份验证,使您可以完全控制身份验证。您可以在服务器上生成这些令牌,然后将其传递回客户端设备,然后使用它们通过signInWithCustomToken()方法进行身份验证。
要实现此目的,您必须创建一个服务器端点,该端点接受登录凭据(例如用户名和密码),并且如果凭据有效,则返回自定义JWT。然后,客户端设备可以使用从服务器返回的自定义JWT对Firebase(iOS,Android,Web)进行身份验证。身份验证后,将在访问其他Firebase服务(如Firebase实时数据库和云存储)时使用此身份。此外,JWT的内容将在Firebase实时数据库安全规则中的auth对象中以及在Cloud Storage安全规则中的request.auth对象中提供。
您可以使用Firebase Admin SDK创建自定义令牌,或者如果服务器使用Firebase本身不支持的语言编写,则可以使用第三方JWT库。