API 关键技术——身份认证
身份认证是 API 安全的基础,在互联网上,网络环境的复杂多样导致 API 的存在状态也是多种多样的。要确保 API 使用的可信可控,使用身份认证技术是最简单、高效的选择。
在身份认证技术的使用中,基于 API 使用者身份的不同,将 API 身份认证技术划分为基于用户身份的认证技术和基于应用程序身份的认证技术。
基于用户身份的认证技术是指 API 的使用者为某个具体的自然人用户,其身份认证过程依赖于用户身份的认证过程,通过确定用户身份来确认 API 使用者的可靠性。
基于应用程序身份的认证技术是指 API 的使用者不是自然人用户,而是另一个 API 或应用程序。其身份认证过程依赖于对 API 或应用程序身份的认证来确认使用者的可靠性。
这两种认证方式,大体相对应三种 API 类型,用户参与型 API 对应基于用户身份的认证技术,而程序调用型 API 和 IoT 设备型 API 对应于基于应用程序身份的认证技术。
在基于用户身份的认证技术中,API 的安全设计与其他 Web 应用并无差别,其认证方式主要有用户名/密码认证、动态口令、数字证书认证、生物特征认证等。随着互联网的发展,人们对安全性的要求越来越高,这些认证方式已经很少单独使用,目前使用最多的是双因子认证(2FA)或多因子认证(MFA),即将两种或多种认证方式组合起来使用,以提高应用程序和 API 的安全性。常见的组合有用户名/密码+短信验证码、用户名/密码+动态令牌、用户名/密码+人脸识别、人脸识别+短信验证码等。这类技术下的业务场景中,认证通常融入单点登录 SSO 系统中,作为整个流程的一个环节。开源组件 CAS 的单点登录实现机制如图所示。
步骤 4 中对用户身份的认证涉及的技术即为上面提及的各种身份认证技术,比如身份认证服务调用 LDAP 来进行用户名和密码的验证或调用数据库来进行用户名和密码的验证、身份认证服务调用 OTP 服务下发一次性令牌等。
在基于应用程序身份的认证技术中,是将应用程序客户端身份认证作为认证的主体,来确认应用程序的身份,常用的认证方式有 HTTP Basic 基本认证、Token 认证、数字证书认证等。这类技术的解决方案中,以 OpenID Connect 为代表,将身份认证融入授权码、简易授权码、客户端凭据等授权流程中,完成不同场景下的 API 身份认证。
在 OpenID Connect 标准规范中,对认证方式的定义既包含基于用户身份的认证技术也包含基于应用程序身份的认证技术,其对应的开源产品 Connect2id server 中支持面向用户身份的可插拔式的多种集成认证方式,比如 LDAP 认证、OTP 令牌认证、X.509 证书认证、生物特征认证等;也支持面向客户端的 HTTP Basic 基本认证、JWT 令牌认证、X.509 证书认证以及客户端注册身份的联邦认证。
在 API 的应用和管理过程中,添加身份认证对于维护整个应用程序的安全、稳定有着重要的意义。安全的基础是信任,身份认证技术是对于 API 被使用过程中使用者身份的第一层安全保障,通过身份确认有利于建立以身份为中心的对象关系,比如调用的对象、调用的时间、调用的频率、调用的来源等;通过使用者身份反查审计日志,追溯整个 API 调用链等。使用了身份认证技术的 API,更有利于对 API 的统一管理、运营、维护,提高 API 日常管理的效率。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/26caa459c0dc6d4357d512f91】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论