保护Rest API以与桌面应用程序

时间:2016-08-21 14:08:17

标签: java spring rest security http

我目前正在使用Spring启动构建REST API。目前,API将把JSON数据提供给JavaFX应用程序,将来可能会被Angular应用程序访问。它可能还值得注意的是,用户无法创建新用户,责任将与sysadmin一起使用。我想知道这种API的身份验证。

一般的想法是,只有一个级别的授权,这将允许用户访问系统中的所有数据。我想知道如何实施此授权。我所研究的大多数解决方案(Spring安全性,OAuth等)似乎都不起作用,因为客户端应用程序不会在浏览器中运行。

目前,我正在向客户端传递每个请求的用户详细信息,并根据数据库中显示的密码哈希检查它们。

所以我的问题是,如何保护不会在浏览器中运行的应用程序,因此无法访问cookie,http会话等。

1 个答案:

答案 0 :(得分:0)

无论客户端是桌面应用程序,移动应用程序还是Web应用程序,相同的主体都可以应用于RESTful API的身份验证。

通常,令牌可以存储在客户端并在其到期之前使用,如果有的话(因此需要刷新)。然后,您可以将令牌作为承载令牌包含在Authorization标头中,每个API调用都会从图片中完全删除Cookie。

许多人喜欢使用JWT,它只是一个基本编码的JSON结构,然后签名以防止篡改。 JWT可以轻松地从持久层中解脱出来,真正构建分布式身份验证框架,而无需依赖Redis或其他一些Key / Value Store。唯一需要的是秘密密钥或私钥。 JWT在这种风格中使用的一个缺点是,因为它们在到期之前有效,因此很难将其列入黑名单。标记本身也可能比不透明标记更大。

根据您使用的技术,您将检查令牌是否已签名或查找用户/会话信息服务器端。