REST API 开发与单页应用解析
1. API 认证与安全
为了将应用暴露给其他程序,使用 API 密钥认证是一个不错的选择,但在配置 Spring Security 时,需要为 API 密钥进行不同且更快的凭证检查,与普通用户名和密码的加盐哈希方法不同。具体操作如下:
1.创建认证管理器:为基本认证创建一个单独的认证管理器,用于验证 API 密钥。
2.配置认证 Bean:配置基本认证 Bean,使其使用自定义的认证管理器。
为了防止数据库被攻破时 API 密钥泄露,对 API 密钥的哈希值进行比较是个好主意。使用简单的 SHA - 256 哈希(无盐且仅一次迭代)速度快,且由于 API 密钥是随机生成的,彩虹表无法帮助攻击者逆向工程密钥。
采用 API 密钥方法还意味着要添加管理用户界面元素,用于生成 API 密钥并提供给客户端。同时,应考虑添加撤销和重新生成 API 密钥的功能,以防密钥泄露。
2. API 版本控制
当 API 拥有一定用户基础后,在不破坏现有客户端的前提下对 API 进行演进就成为首要考虑的问题。
2.1 版本控制的原因
在资源中添加数据而不改变现有结构通常不会有问题,因为大多数 JSON 和 XML 解析会忽略额外数据。但当客户端使用模式时,修改数据结构就变得困难,可能会破坏现有客户端。例如:
<post> <content>Pilates