Java后端API调用身份验证的思考

      在如今信息泛滥的数字时代中对产品安全性的要求越来越高了,就比如说今天要讨论的Java后端API调用的安全性,在你提供服务的接口中一定要保证调用方身份的有效性和合法性,不能让非法的用户进行调用,避免数据泄露。那如何有效地进行身份验证呢?你会立马想法采用拦截器,没错,采用拦截器是肯定的,但是如何校验呢?也许你又会说拿调用方的相关参数去认证中心进行验证,验证通过了就说明是合法用户,可放行;验证失败的话那就是非法用户了,必须要拦截在安全门之外;没错,思路是这样的,但是同一个用户在一段时间内反复调用接口的话,若每次都要去认证中心对该用户验证,那么会增加认证中心的负担,并且还有可能会造成对认证中心的恶意攻击;那么我们该如何处理才比较合适呢?此时就需要缓存技术了,在拦截器中利用本地缓存可以提高对同一用户的验证速度。可以参考以下几种,但不限于它们,还有其它的方案。

  • HashMap:它可以很好地保证用户的合法性,但在处理有效性时可能就需要自己去实现逻辑代码了,比如用户信息存在缓存中的有效时长为30分钟,等有效时长过期后就需要从HashMap对象中删除还用户的信息。
  • Redis缓存:比较流行的缓存解决方案,暂时还没应用到,惭愧😂
  • Cache缓存:Google的Cache缓存技术,它是一种很好地的本地缓存技术解决方案。

       目前,在拦截器中使用了Cache技术进行身份验证,可以很好地支撑目前的业务需求。Cache缓存利用主键值key的唯一性来判断本地缓存中用户信息,每次新的key都会有与之对应的value值,并且会将这对新的key-value保存在缓存中,我们可以从value中判断用户是否合法,这样就保证了用户的合法性;此外,这种缓存技术还可以设置对key保存的有效时长,有效时长过期后相应的key-value对会从缓存中被删除,这样就保证了用户的有效性。

 

------20200103闪🚶

posted @ 2020-01-03 19:04  晒太阳的兔子很忙  阅读(1102)  评论(0编辑  收藏  举报