我正在 GRAILS 中构建一个决策支持工具,用于我高中的房间调度。我正在使用 Spring Security,并且想要保护 REST api 的安全。我发现有关正确方法的信息很少。不过我一直在寻找 Spring Security REST plugin
文档对我来说不是很清楚,有人有使用此插件的工作示例/教程吗?
关于如何实现这一点的建议会很棒。
最佳答案
我只是为你大声朗读序列图。我正在使用这个插件和(客户端的 AngularJS)开发一个示例应用程序,并将很快发布(可能今晚)。
步骤如下:
- 客户端使用任何 HTTP 方法请求 REST 资源。
- 服务器使用 401(未经授权)响应客户端的请求。
- 客户端(收到 401 时)将用户重定向到登录页面以提供用户名和密码。 (记住 Spring Security Core 插件)
- 用户提供用户名和密码。 (意味着,客户端应该发出一个 POST 请求,点击 spring security REST 插件提供的/api/login ,并带有包含用户详细信息的请求正文/请求参数)
- 接收用户信息的服务器执行 4 项任务:
- 验证用户。
- 生成 token (默认由 Spring Security REST 插件提供)。
- 存储 token (在 memcahe 或 GORM 指定的域类中)。
- 将 token 返回给被调用者(客户端)。
- 从服务器收到生成的 token 后,客户端会将其存储在任何本地存储中,并用于该特定用户的进一步 API 调用。
- 每次针对任何资源调用 API 时, token 都会作为
X-Auth-Token
(默认)在 header 中传递,而不是每次都传递Basic Auth
.
因此,您最终会获得基于 token 的 REST 端点验证。 浏览插件的FAQ获取更多答案。
作者很快就会发布最新版本的插件(1.3.0),您会在文档中找到一些更新。
我现在刚刚接触了这个插件的基本功能,但它不仅可以灵活地处理生成 token ,还可以处理更多事情。例如,delegating auth to OAuth providers 。我将在将其推送到 github 后立即更新此答案中上述示例应用程序的链接。
更新:
Sample App
关于api - 使用 Security REST 插件保护 REST API 的安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989427/