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

Pra*_*ede 6 authentication spring oauth jhipster ionic-framework

我已经将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)
Run Code Online (Sandbox Code Playgroud)

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

abh*_*314 3

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

http://jhipster.github.io/security/
Run Code Online (Sandbox Code Playgroud)

根据我在 ionic-framework 中使用 jhipster 的 REST api 的个人经验,我可以说不要对移动应用程序(ionic-framework)使用 HTTP 会话身份验证,因为移动应用程序通常不会与 HTTP 会话身份验证所依赖的 cookie 一起使用之上。

Oauth2 和 JWT 都可以与 ionic 混合应用程序配合良好

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 属性。