使用 Spring Security 保护对 Spring MVC REST API 的 jQuery 调用

Posted

技术标签:

【中文标题】使用 Spring Security 保护对 Spring MVC REST API 的 jQuery 调用【英文标题】:Securing jQuery calls to Spring MVC REST API using Spring Security 【发布时间】:2012-11-20 08:42:46 【问题描述】:

我正在使用 Spring MVC 框架开发一个 REST JSON API。我想为用户提供一个 html 应用程序,服务器和客户端之间的整个通信都是用 JSON 格式完成的。所以客户端单个 HTML 应用程序使用 jQuery 向服务器发送 AJAX 调用。

我的大问题是找到正确的方法来集成适当的安全技术。我通过 Spring Security 阅读了很多关于基本、摘要或基于表单的身份验证的信息,但我认为这不是正确的方法。如果用户未登录并且我不想在每个请求中发送 jsessionid,我想获得 JSON 响应。

您能否告诉我如何通过执行 AJAX 请求来验证用户身份的正确方法或最佳实践?也许它是 OAuth 2 腿? (对 OAuth 不太了解)

【问题讨论】:

你看过这个baeldung.com/2011/10/31/… 【参考方案1】:

如果您不想在服务器端会话中存储身份验证信息(并在 cookie/url 中使用 JSESSIONID),您可以使用 BASIC 身份验证标头(在 JS 中创建)在每个 ajax 请求中发送身份验证信息。

我从未使用过 2-legged oauth,所以我不会对此发表评论。

编辑:错字

【讨论】:

我目前的见解:因为我希望能够使用 json 和 ios 应用程序为我的单页主页提供服务,所以我需要两种不同的身份验证方法。一个基于表单的登录,带有用于 AJAX 调用的 cookie 和一个用于 iOS 应用程序的基本身份验证(两者都通过 HTTPS 运行)。我使用 Spring Security 和同一控制器的多个请求映射实现了身份验证。对于每个控制器,都有一个映射(/ajax/controlerName/ 和 /rest/controlername)。因此,我可以为 URL /ajax/** 和 /rest/** 设置两种不同的身份验证方法。这是一个好的解决方案吗?

以上是关于使用 Spring Security 保护对 Spring MVC REST API 的 jQuery 调用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Security Rest 插件保护 Grails Rest Api

Spring Security SAML 扩展和@PreAuthorize

如何使用 Spring Security 保护 Vaadin 流应用程序

Spring security - 允许导航但保护某些页面

使用 Spring Security Saml 和 SP 应用程序的无状态会话

使用 Spring Security 的 CSRF 保护