Authentication 是新功能:DiditAuth for Android 取决于具体版本发布。这里未确认分发坐标、版本和可调用签名。请勿安装猜测的软件包,也不要将 Identity verification SDK 用作 Authentication SDK。
准备应用
- 确认您的 Didit 应用已启用 Authentication,并从控制台复制其登录源(
https://<slug>.auth.didit.me,沙盒环境为 <slug>.sandbox.auth.didit.me)。
- 注册一个您的应用和运行时都支持的精确回调 URL。验证应用链接的所有权,请勿假设任意自定义 URL 方案都会被接受。
- 将沙盒和生产环境的配置分开,包括回调处理和存储的凭据。
- 在连接身份验证或监控之前,选定您稳定的用户映射方式。
托管登录请使用系统浏览器标签页,并验证返回的应用链接。原生通行密钥需要已配置的依赖方域名以及平台凭据流程。
实现托管流程
使用 {origin}/sign-in URL 打开系统浏览器标签页。提供一个全新的随机 state、一个 S256 PKCE 挑战值以及您已注册的 redirect_uri。验证器仅在该次尝试期间保存在您的应用中。JavaScript 快速入门介绍了底层协议;在原生代码中请使用平台的加密功能和 URL 处理方式,而不是浏览器全局对象。
回调时,请先验证 state、事务有效期和回调目标,然后向 token/ 交换一次性使用的授权码。使用原始验证器和精确的 redirect URI。取消或关闭浏览器不算成功登录。
刷新令牌必须存储在平台保护的加密存储中,绝不能存放在普通的偏好设置文件、分析数据或崩溃日志中。使用终端用户的 Bearer token 调用 GET session/ 以验证当前会话。刷新操作需串行执行,两个令牌须同时替换,退出登录后清除与用户相关的状态。有关请求约定和刷新令牌重用行为,请参阅令牌与 JWKS。
原生 SDK 发布预览
原生 Authentication 模块计划提供登录、当前会话访问、令牌获取、退出登录和提升认证功能,并自动收集设备信号。原生通行密钥和受保护的令牌存储也包含在该版本中。封装 API 将遵循其已发布的平台约定;请勿从设计示例中复制猜测的构造函数参数或方法签名。
在该模块发布之前,请禁用其适配器,或为您已启用的应用使用经过审核的托管协议实现。请勿仅凭安装软件包就宣传原生 Authentication 快速入门可以正常工作。
连接验证和监控
您的后端需根据已认证的用户推导出 vendor_data。为该用户创建验证会话或签发限定范围的监控令牌。只能将会话凭据或限定范围的令牌返回给您的应用,API 密钥必须保留在服务器端。
需要身份证件验证时,请使用 Android 验证 SDK。如需在您的平台上支持监控,请遵循提交交易的说明。登录、验证和交易决策应分开处理。
验证集成
请测试以下场景:冷启动应用后返回、应用进入后台和回到前台、取消浏览器、回调不匹配、授权码重放、令牌过期、并发刷新、MFA、退出登录,以及以其他用户身份登录。通行密钥的注册和登录,需在支持的设备上且该版本可用后进行测试。在目标平台上运行之前,仅设备检查仍视为未经验证。