react-native - 使用 React Native 和 Firebase 自定义 token 在 LDAP 服务器上进行身份验证

标签 react-native firebase-authentication openldap firebase-admin ldapjs

我正在尝试通过 LDAP 服务器对我的用户(从我的 RN 应用程序)进行身份验证(我已经找到一个尝试进行身份验证的服务器 here,而且它有效!)。每次收到用户的凭据(用户名和密码)时,我都可以使用 Firebase 创建一个自定义 token ,并将其保存在 Firebase 实时数据库中。

主要问题是我不知道如何将我的应用程序连接到 LDAP 服务器,我调查后发现我必须安装类似 openLDAP 的东西。或 ldapjs但我不明白必须如何进行身份验证 我的猜测是:

  1. 用户登录我的 RN 应用程序
  2. RN 应用程序将凭据发送到 Firebase
  3. Firebase 创建自定义 token (使用 Firebase 函数生成自定义 token )
  4. Firebase 将自定义 token 返回给 RN 应用程序
  5. RN应用将token发送给LDAP服务器(服务器有预定的用户和密码用于测试)
  6. LDAP 服务器验证 token ,因此进行身份验证
  7. LDAP 服务器向 RN 应用程序返回属性或“未找到”
  8. RN App 授予/拒绝对应用的访问权限

任何帮助或建议都会受到欢迎,谢谢 :) 抱歉我的英语不好。

最佳答案

您就快完成了,但不是将 Firebase 自定义 token 发送到 LDAP 服务器,而是在创建 Firebase token 之前使用 LDAP 服务器对用户进行身份验证。这两项操作都必须在受信任的环境中完成,例如您控制的服务器或 Cloud Functions,并且您通常会在该环境中使用 Firebase Admin SDK。

所以:

  1. 用户登录我的 RN 应用程序。
  2. RN 应用程序将凭据发送到可信环境。
  3. 可信环境通过 LDAP 服务器验证凭据。
  4. 可信环境使用 Firebase Admin SDK 创建自定义 token 。如果需要,此 token 可以包含来自 LDAP 服务器的自定义属性,格式为 Custom Claims .
  5. 可信环境将自定义 token 返回给 RN 应用程序
  6. RN App 授予/拒绝对应用的访问权限

有关这方面的更多信息,请参阅 Firebase documentation on custom auth .从那里:

To achieve this, you must create a server endpoint that accepts sign-in credentials—such as a username and password—and, if the credentials are valid, returns a custom JWT. The custom JWT returned from your server can then be used by a client device to authenticate with Firebase (iOS, Android, web).

关于react-native - 使用 React Native 和 Firebase 自定义 token 在 LDAP 服务器上进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54048013/

相关文章:

react-native - 错误 : Error: Unable to resolve module ./ Hook 来自/node_modules/react-native-reanimated/src/reanimated2/index.ts

ios - GoogleAuth 在 IOS 中使用 Firebase

javascript - Firebase 电话身份验证后根据用户的角色重定向用户

javascript - 如何在 firebase 的 authStateObserver 中调用 .isNewUser()

openldap - LDAP 最大用户数

android - 使用 React Native 读取 NFC 标签类型 "android.nfc.tech.NfcV"和 "android.nfc.tech.NdefFormatable"

reactjs - 使用 React Navigation (React Native) 进行条件路由

javascript - React Native 中同一元素上的出/入动画

ldap - 在Kerberos数据库中找不到服务器ldap/example.com@EXAMPLE.COM

ldap - OpenLdap 如何禁用/启用/删除用户帐户