在 API 服务日益复杂的场景下,仅通过 IP 地址或简单的请求头进行访问控制已难以满足需求。API7 通过引入消费者的概念,开发者可以在 API7 中将消费者与特定的 API 路由、服务开启相同的认证插件进行绑定。当消费者发起请求时,API 网关根据请求中携带的凭证信息识别消费者,并根据绑定关系应用相应的访问控制策略。
API7 企业版新版本中,基于现有消费者认证机制进行优化,将常用的几种消费者认证插件的交互进行优化,增强了权限控制,并支持了单个认证插件添加多个认证凭据,让你能更灵活地管理和轮换这些凭证。
优化消费者认证插件交互
你可以在单个认证插件中轻松添加多个认证凭据,并且配置方式已从代码编写升级为直观的表单操作,使得配置过程更加简单,同时实现认证凭据的灵活管理和轮换。
目前消费者支持多认证凭据的认证方式有以下四种:
Key Authentication
Key Authentication 是一种基于密钥的身份认证方式。消费者需要在请求中添加一个唯一的密钥,这个密钥可以被包含在查询字符串参数或 HTTP 头部中。在消费者配置请求时,他们必须确保在正确的请求字段中携带正确的密钥。
在路由或服务的配置中,我们需要开启 Key Auth 插件设置相应的规则来验证请求的密钥。网关会检查请求中是否包含预期的密钥,并且密钥值是否与配置相匹配。如果密钥验证通过,请求将被允许访问后端服务;如果验证失败,请求将被拒绝。
Basic Authentication
Basic Authentication 是一种基于用户名和密码的身份认证方式。消费者需要在请求中添加一个包含用户名和密码的认证信息,这个信息通常被编码后包含在 HTTP 头部的 Authorization
字段中,但也可以通过查询字符串参数传递(尽管这种做法较不推荐,因为可能暴露敏感信息)。在消费者配置请求时,他们必须确保正确地包含这个编码后的认证信息。
在路由或服务的配置中,我们需要开启 Basic Auth 插件设置相应的规则来验证请求的认证信息。网关会检查请求中是否包含 Authorization
头部,并且其值是否符合 Basic Authentication 的格式,即 Basic <encoded-value>
是用户名和密码以冒号分隔并经过 Base64 编码后的结果。网关会解码这个值,并将解码后的用户名和密码与配置中的信息进行对比。如果用户名和密码匹配,请求将被允许访问后端服务;如果匹配失败,请求将被拒绝。
需要注意的是,由于 Basic Authentication 将用户名和密码以明文形式(尽管经过 Base64 编码,但这并不是加密,只是编码)传输,因此它并不适用于需要高安全性的场景。
JWT
JWT Authentication 是一种基于 JSON Web Tokens(JWT)的身份认证方式。消费者需要在请求中添加一个有效的 JWT 令牌,这个令牌通常被包含在 HTTP 头部的 Authorization
字段中(使用 Bearer
在添加 JWT 凭证的过程中,你可以配置JWT 令牌生成的一些关键要素,包括用于签名和验证的 Key(公钥或私钥)、Secret(对称加密时的密钥)、所采用的算法(例如 HMAC-SHA256 或 RSA-SHA256 等)、以及过期时间来设定令牌的有效期限。只有持有合法且未过期令牌的消费者才能成功访问受保护的后端服务
HMAC Authentication
HMAC Authentication 是一种基于哈希消息认证码(HMAC)的身份认证方式。消费者需要在请求中生成一个 HMAC 值,这个值通常是通过使用预共享的密钥和请求的特定部分(如请求方法、URI、请求体等)计算得出的。这个 HMAC 值可以被包含在查询字符串参数或 HTTP 头部中。
在消费者配置请求时,他们必须按照预定的算法和格式正确地生成并包含这个HMAC值。具体来说,消费者会使用已知的密钥和请求信息通过哈希算法(如 SHA-256)生成 HMAC,并将其附加到请求中。
在路由或服务的配置中,我们需要开启 HMAC Auth 插件并设置相应的规则来验证请求的 HMAC 值。网关会检查请求中是否包含 HMAC 值,并且使用相同的预共享密钥和算法重新计算 HMAC 以验证其有效性。如果 HMAC 验证通过,即计算出的 HMAC 值与请求中包含的 HMAC 值相匹配,请求将被允许访问后端服务。
消费者权限策略细化
除了优化认证凭据管理外,我们还进一步细化了消费者权限管理。现在,你可以精确到每个具体消费者的权限维度,实现更精细的访问控制。同时,认证凭据的读写权限实现了独立控制,与消费者权限相分离,为你提供了更高的灵活度。
总结
新版本的 API7 企业版在消费者认证与权限管理方面做了很多调整,通过优化认证插件交互、单独管理凭证、支持多种认证方式以及细化消费者权限策略,这些新特性不仅提升了凭证管理的灵活性,还增强了系统的安全性和用户体验。后续可能的产品迭代方向包括支持更多认证方式、进一步优化凭据管理的便捷性等,为你带来更多创新功能和更好的使用体验。