2017-04-18 89 views
2

我正在使用Spring引导来编写Restful API端点。我想创建登录/注销功能。我不想使用Spring引导的默认登录页面。Spring引导Restful API:简单认证

从我的理解,一个简单而安全的方式来做到这一点,就是:

  1. 客户提供服务器的用户名和密码,
  2. 服务器发送认证码,其用户可以使用后续调用该API端点
  3. 的认证代码是有效的,直到用户注销/一定的时间量经过

是否有任何常规的名称为的这种方法认证?

我不想使用Spring引导登录页面。 Spring引导是否有任何其他的默认实现这个身份验证方法?如果是,它会在哪里存储认证码。它存储在内存中吗?

+0

“我不想使用Spring启动登录页面“。 - 你没有解释为什么*。那你想要更换呢? – chrylis

+0

我正在实施restful api。没有用户界面。 –

+0

那么也许你正在寻找带有密码授权的Spring Security OAuth2? – chrylis

回答

1

我以前有过同样的问题。由于您正在实施Rest API,因此默认情况下它应该是无状态的,所以这意味着您每次想要请求某些API时都应该进行身份验证。如果你喜欢这种方式,也许尝试拥有一些你可以用来执行认证的CAS系统。这与你在问题中描述的几乎相同。 (这是我博客中简化CAS的post)。否则,你也可以考虑在你的Rest服务前面有一个入口点或者代理,在这个代理中你可以根据它提供的凭证为客户设置一个令牌,然后要求客户发送这个令牌与请求一起。设置令牌的到期时间并在该时间后无效。

我不认为在Spring引导中对此有任何现有的实现,但对于基于CAS和令牌的请求,您可以使用Spring Security作为部分功能,例如, TokenBasedAuthentication已经在Spring Security中实现了

+0

与其他答案中提到的JWT有什么不同? –

+1

当我发布我的答案时,他还没有在那里:),对于基于令牌的解决方案,我认为它们完全一样。 – Simon

2

无状态,基于令牌的认证就是你要找的。 JSON Web Tokens(JWT)是其中的一个实现。

我写了一篇关于在SpringBoot中设置JWT以便与Angular一起使用的教程。它太长时间,包括在这里 - 这是一个两个舞伴,和第二部分,智威汤逊处理在http://chariotsolutions.com/blog/post/angular-2-spring-boot-jwt-cors_part2

如果你想在第一部分,它在http://chariotsolutions.com/blog/post/angular-2-spring-boot-jwt-cors_part1

+1

我发现这篇文章也有帮助: https://auth0.com/blog/securing-spring-boot-with-jwts/ –