身份认证在日常生活当中是非常常见的一项功能,大家平时基本都会接触到。比如用支付宝消费时的人脸识别确认、公司上班下班时的指纹/面部打卡以及网站上进行账号密码登录操作等,其实都是身份认证的场景体现。
如上图,Jack 通过账号密码请求服务端应用,服务端应用中需要有一个专门用做身份认证的模块来处理这部分的逻辑。请求处理完毕之后,如果使用 JWT Token 认证方式,服务器会反馈一个 Token 去标识这个用户为 Jack。如果登录过程中账号密码输入错误,就会导致身份认证失败。这个场景大家肯定都非常熟悉,这里就不做展开举例了。
网络身份认证的意义在哪里?
安全性
网络身份认证确保了后端服务的安全性,避免了未经授权的访问,从而确保数据的安全性。比如防止某些黑客攻击,以及一些恶意调用,这些都可以通过身份认证进行阻拦。
实用性
从实用性的角度考虑,它可以更方便地记录操作者或调用方。比如上班打卡其实就是通过记录「谁进行了这项操作」来统计员工上班信息。
其次它可以记录访问频率及访问频次。例如记录某用户在最近几分钟中发起请求的频率和频次,可以判断这个用户活跃程度,也可以判断是否为恶意攻击等。
功能性
在功能层面,它通过识别身份可以对不同的身份进行不同权限的操作处理。比如在公司里,你的身份权限无法使用某些页面或服务。再细致一点,对不同身份或者不同的 API 接口调用方做一些相关技术上的限制策略,如限流限速等,以此来达到根据不同的用户(调用方)采取不同的功能限制。
Apache APISIX 进行集中式身份认证优点
从传统到新模式
如下图所示,左侧的图为我们展示了一种比较常见的传统身份认证方法。每一个应用服务模块去开发一个单独的身份认证模块,用来支持身份认证的一套流程处理。但当服务量多了之后,就会发现这些模块的开发工作量都是非常巨大且重复的。
这种时候,我们可以通过把这部分的开发逻辑放置到 Apache APISIX 的网关来实现统一,减少开发量。
如右图所示,用户或应用方直接去请求 Apache APISIX,然后 Apache APISIX 通过识别并认证