React native 在React Native中将持久会话的访问令牌设置为redux状态安全吗?
我正试图找出一种安全的方法,在react native中持久化会话 我有一些敏感数据,比如从服务器检索到的访问令牌,我计划将其设置为redux状态 我不确定将敏感数据(如React native 在React Native中将持久会话的访问令牌设置为redux状态安全吗?,react-native,redux,React Native,Redux,我正试图找出一种安全的方法,在react native中持久化会话 我有一些敏感数据,比如从服务器检索到的访问令牌,我计划将其设置为redux状态 我不确定将敏感数据(如accessToken设置为redux状态)是否安全 如果不安全,我是否应该将accessToken保存到设备存储器中,并在每个屏幕请求和服务器请求上加载accessToken dispatch({type: LOGIN_SUCCESS, payload: {refreshToken, authTimestamp, email}
accessToken
设置为redux状态)是否安全
如果不安全,我是否应该将accessToken
保存到设备存储器中,并在每个屏幕请求和服务器请求上加载accessToken
dispatch({type: LOGIN_SUCCESS, payload: {refreshToken, authTimestamp, email} });
是的,如果您打算存储
accessToken
,则应将其保存在设备安全存储中。refreshttokens
可能永远不会离开您的服务器,因为这可能是持续生成新的accessTokens
的安全漏洞
您可以每次加载accessToken
。另一种选择是将accessToken
存储在一个安全的cookie中,并将其传递回应用程序,这样您就不必担心令牌的管理
然后是一个如何填充的问题,通常与身份验证服务和授权提供者集成。这是保护应用程序安全的两个不同的附加步骤。我假设您已经有现成的解决方案(如果不发表评论,我将在这里添加一些示例)是的,它是安全的。但我想添加一些注释:我认为redux状态不会存储它(除非您使用redux状态持久化),这意味着,当您退出应用程序时,您将失去访问令牌。如果您想存储它(这样用户就不必再次登录),我建议将其存储在react native keychain中,从中读取并设置为应用程序启动时的状态。我在mongoDB中存储了
refreshToken
和accessToken
,我不知道是否应该将两者都存储在react native keychain
中。或者只将refreshttoken
存储到react native keychain
中,然后将accessToken
加载到redux状态。refreshttoken
和accessToken
存储在mongoDB中newUser.refreshToken=wait newUser.\u id.toString()+'.+crypto.randomBytes(64).toString('hex');newUser.accessToken=newUser.\u id.toString()+'.+crypto.randomBytes(64).toString('hex')
Hi,我目前正在遵循本指南的流程,我在考虑是否应该将refreshToken(6个月后过期)
保存到设备存储器中,并使用refreshToken
生成accessToken(20分钟后过期)
。refreshttoken
和accessToken
都将存储在mongoDB中,也存储在设备存储器中。express服务器的受保护路由将比较并检查设备存储中的accessToken(20分钟后过期)
是否与用户的mongoDBaccessToken
中的匹配。我不确定我使用refreshToken
和accessToken
的方法是否冗余,因为它仍然需要为每个需要访问令牌验证的请求使用服务器进行验证。我还正在寻找一种解决方案,以便在本机应用程序和web上安全地验证令牌。对于本机应用程序,我使用react native device info
npm中的DeviceInfo.getUniqueId()。对于web,似乎没有办法获得不改变的唯一设备id。IP和MAC地址都可以更改。我将重复这一点,刷新令牌
不应发送到设备。
const INITIAL_STATE = {
token: {
accessToken: '',
loading: false,
error: ''
}
};