API安全(十)-登陆
1、登陆 在前面,我们把图上常见的安全机制都做了一个简单的实现,但是登陆并没有在图中体现,因为并不是每次调用API的时候都需要登陆;登陆只是一个偶尔发生的事情,并不像图中的机制,每一次API的调用都贯穿在其中。但登陆也是整个安全机制中,重要的一环。 2、之前认证中(HttpBasic)存在的缺陷 在前面我们实现的HttpBasic认证逻辑中,每次客户端发请求的时候都要把用户的用户名密码通过base64加密传上来,这样有以下缺点: 2.1、不安全,每次请求都要带用户名和密码,增加了用户名密码泄漏的风险 2.2、每一次传上来用户名和密码以后都要去做check,加密算法校验比较消耗系统资源 3、基于token的身份认证 对于上面的问题,我们可以采用基于token的身份认证,流程如下图; 这样做的好处是:token跟用户名密码是有关联的,但不是直接的关联,从token中没有办法解析出用户名和密码的。不用每次都传用户名和密码,token在服务器端有一个存储,服务器端从客户端拿到token以后,查一下存储中是否存在,就知道用户是否登陆了,不用像之前那样每次请求都要做密码比对。 4、基于cookie和session的实现 对于基于token的身份认证实现有很多,对于java来说最常见的就是基于cookie和session的实现,流程如下图