在微服务中使用 APIGateway 处理认证和授权

API 网关认证是管控通过API传输的数据的重要手段。

总的来说,API网管认证是使用预定义的一些凭证,认证某一的消费者(用户或服务)有没有权限访问当前的API。认证的目的是把没有通过认证的访问拦截掉。

为什么API网关认证很重要

API,是一种从某个端点请求数据并发送到你的中央数据库的方式。
端点可能是一下几种类型:

  • 通过网络应用访问API的人类用户
  • 通过物联网 API 返回数据的一组硬件或设备
  • 使用内部API提交或处理数据的员工或合作商
    无论哪种情况,认证都很必要。外部 API,包括面向用户的 API 和 IoT 设备的 API,最好在允许通过 API 传递数据之前就对端点认证。这可以防止错误和恶意提交数据,帮助管理传输的数据总量,并提供必要的安全层,以便您可以实施访问控制,包括在订阅过期时切断访问的选项。对于内部 API,身份验证似乎不那么重要,但它仍然是验证传输的数据是否已授权以及是否要将其传输到数据存储的重要步骤。
    身份验证还使您有机会确定如何处理失败的请求。这可能意味着只需阻塞请求并返回错误代码,但在某些情况下,您可能仍然希望提供有限的访问。Kong 允许通过通过匿名认证处理这类场景。

Kong API 网关如何认证

kong 支持不同的认证插件,用于把流量转发到上游服务,包括 API 和网管。
身份验证插件可以配置为应用于API网关内的服务实体。反过来,服务实体与它们所代表的上游服务一一对应,本质上意味着认证插件直接应用于那些上游服务。对访问进行身份验证有几种不同的方法,我们稍后将介绍这些方法,包括通用身份验证、匿名访问和多重身份验证。
Kong 还支持 API 密钥认证,这是一种认证用户的强大方法,通过允许最终用户通过报头或查询字符串提供授权 API 密钥来认证。API密钥认证是进行API认证的最流行的方法之一,使用Kong的密钥认证插件可以根据需要轻松地创建和删除访问密钥。
通过使用多个Kong插件来组合不同API身份验证方法,以及不同级别的身份验证(如通用、匿名和多重身份验证),您可以为 Kong 服务和路由接收的数据请求设置复杂的权限。

在微服务中使用 API Gateway 认证

如果要用 Kong API 网关 认证上游微服务的访问,您必须创建一个和该微服务关联的服务。服务实体和微服务或微服务的API是一一对应的映射关系,所以实体创建后,可以把实体看作上游微服务。接着要定义路由,告诉 Kong 如何把收到的数据传给相应的服务实体。
可以把不同的路由指向同一个服务实体,比如,允许以不同的方式对不同的用户组进行身份验证。配置完选择的服务实体和路由后,就可以配置认证插件,用于根据用户凭证允许或拒绝访问。

不同等级的认证

可以使用多个插件提供不同等级的服务,增加了构建更复杂的身份验证方法的可能性。身份验证级别的一些主要示例包括:

通用认证

通用认证只是通过基础认证测试检查提供的凭证。如果通过测试,则会在报头中添加怕凭证细节和消费者信息,并把请求向前传递。如果验证失败,会拦截请求。这意味着您可以通过一系列不同的方法(例如,单因素用户名和密码登录或API密钥)将访问权限限制为仅授权的个人。

匿名认证

有些情况下,您会允许没有通过凭证校验的终端用户匿名访问。比如,允许没有订阅服务的用户使用有限的服务。匿名认证通常要在插件配置中设定匿名用户ID,如果认证失败,则用这个ID代替访问。
如果没有设置匿名访问,那么认证失败的访问会显示403。

多重认证

多重认证用于对一个服务实体使用多个插件认证访问。您可以配置具体的认证方法,比如必须通过所有的认证才能访问,也就是逻辑与生命。这意味着用户必须提供更多的凭证,从而允许建立双因素(或更多)身份验证,从而显著降低未经授权的个人通过暴力攻击或泄露凭据获得访问权限的风险。
也可以选择逻辑或配置并添加匿名ID,当用户通过任一校验即可访问,而没有通过校验时,则以匿名ID访问。
当然也可以使用逻辑或且不配置匿名ID。

API gateway 之间的访问认证

最后,在某些情况下,一个API网关可能需要调用另一个API网关,例如,API网关后面的办公网络需要从另一个API网关后面的远程服务器请求数据。这类调用的身份验证可以提供一个重要的额外控制层,以确保在两个网关之间只传递有效且经过授权的请求。
这些类型的数据请求通常发生在两个网关之间,这两个网关都是作为分布式网络或广域网的一部分由您直接控制的,这样您就可以通过管理员访问这两个网关的安全配置。因此,网关到网关的访问通常是通过授权特定IP地址来实现的,IP是每个网关在其对应的安全设置中使用的,在两个网关之间创建一个IP隧道。
将另一个网关列入白名单,再加上通过安全VPN进行通信的选项,有效地阻止了对来自所有其他IP地址的数据请求的访问,从而在适当的情况下限制了对一个IP的访问,以实现最大的安全性。在一个API网关需要调用另一个API网关的场景中,这是一种允许它这样做而不向第三方未经授权的数据请求打开该网关的选项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值