我已经将jhipster生成器从版本1更新到了版本2。在以前的版本中,我们在生成新项目时不得不选择身份验证。我们可以在Cookie身份验证和 token 身份验证(使用OAuth)之间进行选择。这对我来说很清楚。但是在2.1.1版中,我们现在有三个选择:

1 > HTTP Session Authentication (stateful, default Spring Security mechanism)
2 > OAuth2 Authentication (stateless, with an OAuth2 server implementation)
3 > Token-based authentication (stateless, with a token)

我想同时用于Web和移动应用程序( ionic 框架)的身份验证,该身份验证是2到3之间的一对一?这种选择是否可以使我的应用程序使用群集进行扩展?
谢谢

最佳答案

您将在此处获得有关jhipster身份验证类型的基本信息

http://jhipster.github.io/security/

从我在jhipster的REST api上使用ionic-framework的个人经验中,我可以说不在移动应用程序(ionic-framework)中使用HTTP session 身份验证,因为在该HTTP Session中,移动应用程序通常不会与Cookie一起使用身份验证取决于。

Oauth2和JWT都可以与 ionic 混合应用程序一起正常工作

HTTP session 认证

这是“经典的” Spring Security认证机制,但是我们已经对其进行了相当大的改进。它使用HTTP session ,因此它是一种有状态的机制:如果您打算在多台服务器上扩展应用程序,则需要具有带有粘性 session 的负载平衡器,以便每个用户都位于同一台服务器上。

OAuth2身份验证

OAuth2是一种无状态的安全性机制,因此,如果您想跨多台机器扩展应用程序,则可能更希望使用它。 Spring Security提供了一个我们为您配置的OAuth2实现。

OAuth2的最大问题是需要具有多个数据库表才能存储其安全 token 。如果您使用的是SQL数据库,我们将提供必要的Liquibase changlog,以便为您自动创建这些表。

由于Spring Security仅支持带有SQL数据库的OAuth2,因此我们还实现了自己的MongoDB版本。我们为您生成用于MongoDB的所有OAuth2实现以及必要的MongoDB配置。

此解决方案使用 key ,该 key 应在application.yml文件中配置为“authentication.oauth.secret”属性。

JWT身份验证

像OAuth2一样,JSON Web token (JWT)身份验证是一种无状态安全机制,因此,如果要在多个不同的服务器上进行扩展,它是另一个不错的选择。

默认情况下,Spring Security不存在这种身份验证机制,它是Java JWT项目的特定于JHipster的集成。与OAuth2相比,它更易于使用和实现,因为它不需要持久性机制,因此它适用于所有SQL和NoSQL选项。

此解决方案使用一个安全 token ,其中包含用户的登录名和权限。由于 token 已签名,因此用户无法更改 token 。

key 应在application.yml文件中配置为jhipster.security.authentication.jwt.secret属性。

10-02 02:53
查看更多