当前位置: 首页 > 知识库问答 >
问题:

Spring Security令牌身份验证-RESTful JSON服务

赖翰
2023-03-14

将有一个Angular JS客户机应用程序,它将需要发送用户名和密码,并从应用程序获取令牌,以便在顺序请求中使用。在某些时候,可能也会有Android客户端访问此web服务。

我假设Spring Security在内部将令牌映射到用户会话,这意味着它知道令牌XXXXXXXXXXXX是管理用户Bob,令牌AAAAAAAAAA是标准用户Joe。然而,我对Spring Security没有太多的经验,所以我不知道这一切是如何结合在一起的。我仍然希望能够在控制器和服务方法上使用安全注释。

在Spring Security中有什么方法可以实现这一点吗?

这个问题似乎是一个很好的开始,但我不确定这是否能像我设想的那样通过Spring进行RESTful身份验证。

共有1个答案

柴翰藻
2023-03-14

这将是一个很好的地方开始与SpringRest样板。

  1. 您必须第一次使用http基本身份验证,然后登录(发送用户名/密码),这将返回令牌。
  2. 在后续请求中,您将使用此令牌进行身份验证。
  3. 您必须向链中添加一个筛选器,以便根据令牌进行身份验证。

你必须想出一个令牌格式和加密。理想情况下,您还需要为令牌保留一个到期时间,到期时间和用户名可能是令牌的一部分。使用 <罢工> 加密算法 像MD5这样的加密哈希函数,并获取整个令牌的哈希。

编辑:正如Maciej St Ventpyra所指出的,MD5似乎被破坏了,它被建议使用更强的散列函数,如SHA-256。

Spring security默认情况下会将您重定向到登录页面,但这在REST的情况下没有意义,因此在配置(参考示例github代码)中使用自定义authenticationentrypoint

我的令牌使用此格式:令牌:username:hash:expiry

Hash=MD5(用户名+MagicKey)

expiry=current_timestamp+mins_to_expiry

 <security:http realm="Protected API" use-expressions="true" auto-config="false" create-session="always" entry-point-ref="**CustomAuthenticationEntryPoint**">
        <security:custom-filter ref="**authenticationTokenProcessingFilter**" position="PRE_AUTH_FILTER" />
        <security:intercept-url pattern="/**" access="isAuthenticated()" />
 </security:http>
 类似资料:
  • 我有一个LaravelAPI(实际上是LumenAPI)服务于VueJS前端。Vue应用程序允许用户登录到谷歌。然后将Google令牌发送回Lumen API,后者使用Google验证令牌,然后验证电子邮件地址是否为有效用户。然后它生成一个令牌,与用户一起存储在数据库中,并返回用户对象。 我没有使用Passport或jwt auth之类的东西。那么现在,我如何使用默认的Auth中间件来验证(现在已

  • 我刚刚开始在.NET中开发我的第一个REST API。由于它将是无状态的,我将使用令牌进行身份验证: 基本思想(System.Security.Cryptography): null 检查凭据是否有效(用户名,将哈希密码与db值进行比较) 如果为真,则加密数据对象 对生成的令牌使用HMAC,并将其存储到数据库 将令牌(不带HMAC)返回给用户(cookie/字符串) 对需要身份验证的方法的请求:

  • 除了用户名和密码(例如来自ACS的令牌)之外,是否还有其他使用AMQP对Azure服务总线进行授权的方法? 在我的场景中,我希望能够在不公开凭据的情况下为资源级客户端提供对服务总线的访问权限。

  • 我正在使用C#实现一个REST web服务,它将作为云服务托管在Azure上。因为它是一个REST服务,所以它是无状态的,因此没有cookie或会话状态。 Web服务只能通过HTTPS(由StartSSL. com提供的证书)访问。 用户成功登录服务后,他们将获得一个安全令牌。该令牌将在未来的通信中提供身份验证。 令牌将包含客户端的时间戳、用户ID和ip地址。 所有通信都只能通过HTTPS进行,所

  • 问题内容: 在使用Java EE 6的Web应用程序上,我想将某些功能作为Json Rest Service公开。我想使用身份验证令牌进行登录,用户将发送其用户名,密码,服务器将发送回令牌,该令牌将用于授权用户在给定时间内的进一步请求。 到目前为止,有几个问题困扰着我; 当服务器创建令牌并将其发送给客户端时,服务器是否应该使用像哈希表这样的东西作为用户ID令牌对将其保存在DB或Bean中? 我可以