2016-08-21 30 views
-1

我目前正在使用Spring引导构建REST API。目前该API将向JavaFX应用程序传递JSON数据,未来该API可能会被Angular应用程序访问。它可能还值得注意的是,用户不可能创建新用户,这个责任将与系统管理员一起完成。我想知道这种类型的API中的身份验证。保护休息API以与桌面应用程序结合使用

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

目前,我从每个请求的客户端传递用户详细信息,并根据数据库中显示的密码散列来检查它们。

所以我的问题是,如何保证我不会在浏览器中运行,因此不必访问饼干应用程序,HTTP会话等

+0

“...好像它们不起作用,因为客户端应用程序不会在浏览器中运行。” - 你为什么这么想? OAuth或其中的任何一个都可以用于完整的应用程序。你只需要实现客户端。任何客户都可以访问Cookie等。简单的加密cookie机制或OAuth将满足您的需求。 – Kylar

+0

Spring Security可与非Web或非浏览器应用程序一起使用 –

回答

0

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

通常,令牌可以存储在客户端并使用,直至过期(如果有)(因此需要刷新)。然后,您可以将授权标头中的令牌包含在每个API调用中,从而完全删除图片中的Cookie。

很多人喜欢使用JWT,它只是一个基于64位编码的JSON结构,然后进行签名以防止篡改。 JWT可以很容易地从持久层中解放出来,并且真正构建分布式身份验证框架而不依赖于Redis或其他Key/Value Store。唯一需要的是秘密或私钥。 JWT在这种风格中使用的一个缺点是,将令牌黑名单很难,因为它们在过期之前都是有效的。令牌本身可能会比不透明的令牌更大。

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