我已经将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之间一对一?这个选择是否使我的应用程序可以使用群集进
谢谢
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身份验证
与OAuth2一样,JSON Web令牌(JWT)身份验证是一种无状态安全机制,因此如果您想在多个不同的服务器上进行扩展,这是另一个不错的选择.
使用Spring Security时,此身份验证机制不存在,它是Java JWT项目的特定于JHipster的集成.它比OAuth2更容易使用和实现,因为它不需要持久性机制,因此它适用于所有sql和Nosql选项.
此解决方案使用保存用户登录名和权限的安全令牌.由于令牌已签名,因此用户无法更改.
应在application.yml文件中配置密钥,作为jhipster.security.authentication.jwt.secret属性.