过去几天我一直在努力解决这个问题,并且没有在网上找到可靠,易懂的解决方案。
我有一个网络应用程序,它由一个rest api和一个使用它的表示层组成。表示层具有登录表单,用户引入的数据被发送到REST api,然后REST api使用第三方服务来验证用户。这部分我已经设置好了。
我现在想要的是为每个后续请求引入基于令牌的身份验证,因此我不必在每个请求上发送凭据,然后再次针对第三方服务进行身份验证。
基本上,使用Spring Security(v.3.1.3),我很遗憾如何创建一个可靠的安全令牌,将其返回给请求者,然后根据所述令牌验证请求。
你能指出我正确的方向吗?或者在网上的一些例子?
答案 0 :(得分:1)
服务器端REST应用程序是有状态还是无状态?如果是有状态的,您将不需要使用常规HTTP会话执行任何特殊操作。刚开始使用Spring Security,如果客户端和服务器已经在交换会话信息,那么受保护的API端点将开箱即用。唯一需要注意的是,如果启用了CSRF保护,在这种情况下,您需要稍微调整一下客户端。有关详细信息,请参阅Spring Security文档。
另一方面,如果REST应用程序是无状态的,则必须使用像您提议的基于令牌的方法。有关详细信息,请参阅my answer to a similar post。如果您确实选择按照该答案中的步骤操作,那么您的问题的答案就是:
SecureRandom
实例生成强令牌。总的来说,使用Spring Security可以轻松实现基于令牌的身份验证/授权方法,并利用像EHCACHE这样的缓存库。