通过应用程序关闭获取httponly cookie持久性

时间:2020-05-26 09:59:27

标签: react-native authentication cookies httponly

我目前正在使用基于httponly cookie的身份验证来通过网站对用户进行身份验证。在此之上,我正在创建一个反应本机应用程序,该应用程序还必须对用户进行身份验证,最好是通过同一端点。此时,用户可以通过应用程序登录,并且可以使用credentials: 'include' (获取)在每个后续请求上正确发送cookie。但是,如果重新启动该应用程序,则cookie不会持久。

到目前为止,我的搜索使我找到了以下可能的解决方法:

  • 通过诸如webview或react-native-cookies之类的方法提取cookie,将cookie保存到存储中,然后手动将其添加到每个后续请求中,从而手动管理cookie。
  • 实施一个新的端点,该端点返回令牌并具有两个身份验证流,一个用于网站,一个用于应用程序。

有人遇到过类似情况吗?您能为我指明正确的方向,以免使我的代码库过于复杂,并确保我不容易受到XSS或其他令牌/ cookie盗窃的攻击。<​​/ p>

谢谢。

1 个答案:

答案 0 :(得分:2)

说实话,我从未在react native中实现基于cookie的身份验证。您现在如何处理Cookie?基本上流程应该是这样的:

  1. 您使用用户名和密码进行身份验证。
  2. 服务器将响应标头“ Set-Cookie:sessionIdExample = 1234”
  3. 下次发送请求时,您还应该发送该cookie,这意味着您必须设置标题“ Cookie:sessionIdExample = 1234”

根据您的问题,我想您不是手动设置该Cookie,因此很有可能http客户端正在为您执行此操作。现在,当您关闭应用程序时,cookie值会丢失,如您所说。请注意,切换到基于令牌的身份验证对此无济于事。那你该怎么办:

  1. 使用用户名和密码登录。
  2. 当您收到该会话cookie时,请坚持执行。您可以检查异步存储或更安全的react-native-keychain来持久化数据。
  3. 对于以下请求,请手动设置会话cookie。
  4. 关闭应用程序然后再次打开它时,请检查异步存储或钥匙串(如果您已在其中保存了Cookie)。如果是这样,请设置该Cookie,然后一切正常。
相关问题