jhipster 2:认证选项有什么区别?

时间:2015-02-09 05:42:31

标签: spring authentication oauth ionic-framework jhipster

我已将jhipster生成器从版本1更新到版本2.在之前的版本中,我们必须在生成新项目时选择身份验证。我们可以选择Cookie身份验证和令牌身份验证(使用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)

我想对网络和移动应用程序(离子框架)使用身份验证,它在2到3之间一对一?这个选择是否使我的应用程序可以使用群集进 感谢

1 个答案:

答案 0 :(得分:3)

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

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

根据我在离子框架中使用jhipster的REST api的个人经验,我可以说不使用HTTP会话身份验证用于移动应用程序(离子框架),因为移动应用程序不能玩以及HTTP会话认证所依赖的一般cookie。

Oauth2和JWT都适用于离子混合应用程序

HTTP会话身份验证

这是“经典”Spring Security身份验证机制,但我们对其进行了相当大的改进。它使用HTTP会话,因此它是一种有状态机制:如果您计划在多个服务器上扩展应用程序,则需要使用具有粘性会话的负载均衡器,以便每个用户都停留在同一服务器上。

OAuth2身份验证

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

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

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

此解决方案使用密钥(应在application.yml文件中配置)作为“authentication.oauth.secret”属性。

JWT身份验证

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

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

此解决方案使用保存用户登录名和权限的安全令牌。由于令牌已签名,因此用户无法更改。

应该在application.yml文件中配置密钥,作为jhipster.security.authentication.jwt.secret属性。