微服务-API网关-身份验证

身份验证介绍

身份验证通常是进入系统的第一道大闸,要求用户出具登录此系统的身份证明。

其实在实际情况下,很多人开发的系统都没有身份验证功能或者就只有普通用户名和密码验证功能,这样的系统其实都是不完善的,也是不符合安全标准的,所以作为这么大众化的系统,我们有必要做详细的学习和了解。

##身份验证分类

对于身份验证,我们分两种情况来看待,界面登录验证接口调用验证,这两种方式所使用的身份验证方法很多时候是不一样的。

界面登录验证

指用户通过前端(包含浏览器端和移动端)来进入系统,用户一旦登录成功后,用户后续的操作便是以此身份来执行,常规的做法是服务端生成相应的Session,前端生成Cookie。常见的界面登录解决方案有SSO、Ldap、OAuth、Basic、Kerberos等。下面我们说说这几个解决方案。

Basic

普通用户名密码登录,通常把用户名和密码以明文或者加密后的方式存储在数据库中,当用户在前端输入用户名密码后,后端进行验证,通过后会生成相应的Session信息,这样就算验证成功了。

这是最基本的一种身份验证方式,在开源软件的身份验证功能里面通常都会带有这种方式。

Ldap

LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。

目录数据库是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。

目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。

LDAP目录服务是由目录数据库和一套访问协议组成的系统。

OAuth

OAuth 2.0 是一个行业的标准授权协议。OAuth 2.0 专注于简化客户端开发人员,同时为 Web 应用程序,桌面应用程序,手机和客厅设备提供特定的授权流程。

它的最终目的是为第三方应用颁发一个有时效性的令牌 token。使得第三方应用能够通过该令牌获取相关的资源。常见的场景就是:第三方登录。当你想要登录某个论坛,但没有账号,而这个论坛接入了如 QQ、Facebook 等登录功能,在你使用 QQ 登录的过程中就使用的 OAuth 2.0 协议。

Kerberos

Kerberos 是一个网络认证的框架协议,其设计的初衷便是通过密钥系统为 Client 和 Server 应用程序之间提供强大的认证服务。在使用 Kerberos 认证的集群中,Client 不会直接和 Server 进行认证,而是通过 KDC(Key Distribution Center)来完成互相的认证。

Kerberos是一种单点登录解决方案,使用场景之一是在大数据(Hadoop)集群中,用来作为大数据安全的基础保障。

SSO

SSO英文全称是Single Sign On,即单点登录。在多个系统中,用户只需要在其中一个系统中登录过了,就不需要在其他系统中再登录了。

SSO登录方式也是现在最流行的验证方式,在公司内部会有很多套系统,什么Wiki、Gitlab、Jira等等,如果大家在进入每个系统前都去输入用户名密码搞一次,这是挺烦人的,同时也浪费了很多时间和精力,如果用SSO只需要登录一次就好了,岂不是大快人心。

SSO代表一种概念,并不是一种具体的解决方案,最常见的解决方案是CAS,这个我们在后面的章节会单独讲解。CAS可以和Ldap一起构成完整的登录解决方案。

接口调用验证

指用户直接通过调用系统的RESTful API等方式来发起操作,常见的接口调用验证方案有HMAC、JWT、证书等。

HMAC

HMAC英文全称是Hash-based Message Authentication Code,即基于Hash的消息的认证码

你可能感兴趣的:(微服务)