gpt4 book ai didi

rest - Spring Boot REST token 授权和认证最佳实践

转载 作者:行者123 更新时间:2023-12-04 15:33:37 25 4
gpt4 key购买 nike

在 REST spring boot 中授权和认证用户的最佳实践是什么?

我正在使用标准页面 + REST API 为移动设备构建 Web 应用程序。我查看了许多关于 Spring 安全性的文章,基本上大多数文章都采用了某种允许或阻止 REST 调用的更合适的方法。但是,就我而言,我有一些基于用户身份的身份验证逻辑。例如,有一个 /update更新用户信息的API,用户可以更新自己,但不能更新其他人。
最初我想使用下一个身份验证模式:

  • 用户调用身份验证 API 并传递名称/密码或 cookie
  • 系统生成短生命周期 token ,保存在其数据库中。
  • 用户得到这个 token ,更新他的 cookie(这样 Web 应用程序中的 JS 可以读取和使用它)
  • 当 REST 调用被传递时,cookie 被传递。在 Controller , token 被提取,检查是否过期,对数据库进行查询以验证 token 并获取用户 ID。
  • 根据用户 ID,将允许或阻止 REST。

  • 这是正确的实现方法吗?阅读了有关 Spring Boot 安全性的文章后,我脑子里一片困惑。
    至少: session 身份验证对我不起作用(REST 是无状态的)。我想为移动设备进行身份验证而不在那里存储登录名/密码。

    在 REST 主体中传递这个 token 是否有意义?在 GET 方法的情况下呢?

    非常感谢您分享您的知识。

    最佳答案

    您找到解决问题的方法了吗?

    我已经在别处回答了这个问题,如果您确定将来不想向其他开发人员/客户开放 API(如果您这样做,那么您应该查看 OAuth),那么基于 token 的简单解决方案将起作用。

    基本上是这样的:

  • 设置一个标准的 html 登录页面,您可以使用它来让用户登录到应用程序
  • 设置 spring security 以在使用身份验证 token 成功登录时返回 cookie
  • 在您的移动应用程序中,嵌入 WebView(或等效项)并加载此登录表单 - 允许用户通过该 WebView 登录,在响应时抓取 cookie 并存储 token (因为移动设备通常是单用户,您可以保持很长时间以节省移动用户必须保持登录)
  • 将安全过滤器添加到 REST API 以针对 token 进行身份验证(例如,从移动应用程序传递 header 中的 token ) - 然后您将能够对当前用户等使用普通的 spring 身份验证上下文。

  • 谷歌在这里建议了这种方法:(编辑:谷歌似乎已经将我最初阅读的页面更改为关于使用 Google+ 登录和 OAuth2.0 - 我看不到他们一般移动/API 文档的链接 so here it is in the web archive :) )

    我还在这里写了我的实现:

    Overview of the approach using Spring security

    The code & details

    尽管这实际上只是一个实验/概念证明,但它可能对您的思考有用。

    关于rest - Spring Boot REST token 授权和认证最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27651627/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com