android - 最佳实践认证/授权原生移动应用
问题描述
目前,我们正在研究移动应用程序(本机)的开发,我们希望将客户登录到具有 REST API 的后端(Java),该后端使用 5 位代码、仅他们的指纹或面部 ID。现在我是否阅读了 RFC 8252 ( https://www.rfc-editor.org/rfc/rfc8252 ),它指出这是本地移动应用程序的最佳授权方法,但我想知道身份验证步骤应该如何工作案子。当然,我已经在 stackoverflow 上找到了一些主题,但其中大多数都相当陈旧并且可能已经过时(?),例如Rails api 和原生移动应用程序身份验证
我希望它应该如下工作,但不确定这是否正确。当客户在移动应用程序中注册时,我们应该在后端生成一个令牌(UUID)并将其存储在移动应用程序钥匙串中的数据库中,该钥匙串只能通过输入 PIN 或生物识别来访问。当客户通过生物识别 PIN 验证自己的身份时,我们可以获取令牌并将其发送到后端以验证其是否有效。只有我对这种方法有一些担忧:
由于我们只会根据令牌对客户进行身份验证,这意味着如果您可以获取令牌,您就可以在每台设备上登录。为避免这种情况,我们可以存储设备 ID 或其他使设备唯一的 ID,尽管从 GDPR 的角度来看,存储设备 ID 并不理想,因为您可以根据此 ID 识别客户。
如果客户将 root 设备,他们可以访问钥匙串,因此可以获取/窃取令牌
因此,正如您所了解的,我不确定这是否是最省钱的方法,我想知道是否有更好的做法来为本地移动应用程序创建身份验证/授权流程,例如移动银行应用程序如何进行身份验证/授权流程?
谢谢
解决方案
推荐阅读
- swift - 闭包功能无法正常工作
- php - 通过自定义标头变化的 Http 缓存
- amazon-web-services - AWS > Lambda > Canary 函数
- javascript - 如何使用 chance.js 生成 100 个唯一的 10 字符字符串
- python - 我可以用 Python/OpenCV 复制 GIMP 的 HSL 复合函数吗?
- python - Python Flask 表单 - html 选择框返回“无”作为选定项
- python - 为什么我的数据没有显示在这个 Pandas 图表中?
- php - 我应该将 composer.lock 置于库的版本控制之下吗?
- java - 在波斯语,希伯来语设备的导航抽屉左侧放置菜单图标的最佳做法?
- oracle - 如何使用 Oracle APEX 将计算列从一个表保存到另一个表?