如何解决使用 Google 和我的服务器后端进行身份验证
我正在创建一个带有离子的应用程序。我使用 google 身份验证,使用网络上的说明 (https://www.pragma.com.co/academia/lecciones/como-implementar-un-login-de-google-con-ionic)。 一切正常,我按照 Google (https://developers.google.com/identity/sign-in/web/backend-auth) 的建议获取并验证了 JWT。
我的问题是,在认证之后,我需要向我的后端发出获取/发布请求。保证请愿书真实性的最有效方法是什么? 在每个请求上发送 JWT 并验证它?我认为这不是很有效,也不安全。
提交 access_token 并使用 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=
解决方法
基于初始身份验证和 jwt,您可以使用服务器端框架的标准会话管理功能创建一个普通的旧会话。这将是最安全的选项,客户端应用程序根本不会保存 jwt,只有一个随机会话 ID,在 httpOnly cookie 中,可以防止 XSS。这意味着您只有一个来源(您的前端应用与之对话的一个后端域)。
您可以在每个请求上发送 jwt 并每次都对其进行验证,这也很常见,但 jwt 实际上并不适用于此。无论如何,您可能会访问您的数据库以检查撤销/注销,因此它仍然不会是无状态的,用户将拥有多个随机数作为会话令牌提供一些攻击面,并且如果 jwt 未存储在 httpOnly cookie 中,它也容易受到 XSS 的影响。
如果您将 jwt 存储在 httpOnly cookie 中,那么在几乎所有情况下,一个普通的旧随机会话 ID 都更好、更安全(真正无状态应用程序的显着例外,但这是一种安全权衡,而您实际上并不大多数时候需要无状态)。实际使用 jwt 而不是将其存储在 httpOnly cookie 中的一个原因是,如果您想将其发送到多个来源,那么这是一个架构问题,如果您想要一个 API 网关或类似的,或者接受 XSS 的风险(并以其他方式减轻它)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。