如何在React Native Expo中通过Salesforce PIN Protect完成PIN用户认证
Salesforce PIN码身份认证实现方案(React Native/Expo 适配)
核心逻辑说明
Salesforce的PIN Protect功能本质是首次完整身份认证后,通过本地PIN绑定会话凭证的免密校验机制,无需单独的PIN校验REST API,全流程可以通过标准OAuth2接口配合本地逻辑实现,核心实现逻辑如下:
- 首次认证:用户首次启动应用时,先走标准OAuth2身份校验流程(支持用户名密码、SSO等方式),成功后获取Salesforce返回的
access_token、refresh_token有效凭证 - PIN绑定:首次认证通过后,引导用户设置4-6位自定义PIN码,将PIN的加盐哈希值(禁止明文存储PIN)、
refresh_token、客户端凭证加密后存入Expo安全存储模块(推荐用expo-secure-store,不要用普通AsyncStorage) - 后续免密校验:用户后续启动应用时仅需输入PIN码,本地校验PIN哈希匹配后,直接调用OAuth刷新令牌接口获取新的
access_token,即可正常调用所有业务REST API,全程无需再次输入用户密码
相关REST API调用说明
刷新令牌接口(核心免密调用接口)
- 接口地址:
/services/oauth2/token - 请求方法:
POST - 必传参数:
参数名 说明 grant_type固定值 refresh_tokenclient_id你在Salesforce后台创建的Connected App的客户端ID client_secretConnected App的客户端密钥 refresh_token本地加密存储的首次认证拿到的刷新令牌 - 响应说明:校验通过后会返回新的
access_token和有效期,直接用该令牌调用其他业务接口即可
React Native(Expo)适配注意事项
- 所有敏感数据(PIN哈希、刷新令牌、客户端密钥)必须存储在安全加密存储区域,禁止明文存储在普通本地文件或缓存中
- PIN校验逻辑全部在本地完成,不要将PIN或其哈希值传输到服务端,避免泄露风险
- 需设置PIN错误次数阈值(建议5次),超过阈值直接清空本地所有敏感存储,强制用户重新走首次认证流程绑定PIN,防止暴力破解
内容的提问来源于stack exchange,提问作者Guessers
相关产品推荐
相关产品推荐

