RESTful Web 服务必须首先对请求进行身份验证,然后才能发送响应。身份验证是指验证身份的流程。例如,您可以出示身份证或驾驶证证明您的身份。同理,RESTful 服务客户端必须向服务器证明其身份才能确立信任。
一、什么是 RESTful API 身份验证方法?
RESTful Web 服务必须首先对请求进行身份验证,然后才能发送响应。身份验证是指验证身份的流程。例如,您可以出示身份证或驾驶证证明您的身份。同理,RESTful 服务客户端必须向服务器证明其身份才能确立信任。
RESTful API 包含四种常见身份验证方法:
HTTP 身份验证
HTTP 定义您实施 REST API 时可直接使用的一些身份验证方案。以下为这些方案的其中两种:
基本身份验证
在基本身份验证中,客户端在请求头中发送用户名和密码。其使用 base64 编码,该编码技术将对组转化为一套 64 个字符进行安全传输。
不记名身份验证
术语不记名身份验证指向不记名令牌授予访问控制的流程。不记名令牌通常是服务器在响应登录请求时生成的加密字符串。客户端在请求头中发送令牌以访问资源。
API 密钥
API 密钥是 REST API 身份验证的另一个选项。在此方案中,服务器向首次通信的客户端分配生成的唯一值。无论客户端何时尝试访问资源,其使用唯一的 API 密钥进行验证。API 密钥的安全性较低,因为客户端必须传输密钥,其易受网络盗窃的攻击。
OAuth
OAuth 结合密码和令牌实现对任何系统的高度安全登录访问。服务器首先请求密码,然后再额外请求令牌以完成授权流程。其可以随时查看令牌,也可以在特定范围和长度的一段时间内查看令牌。
二、RESTful API 服务器响应包含哪些内容?
REST 原则要求服务器响应包含以下主要组件:
状态行
状态行包含三位数字状态代码表示请求成功或请求出现故障。例如,2XX 代码表示成功,但 4XX 和 5XX 代码表示错误。3XX 代码表示 URL 重定向。
以下为一些常见的状态代码:
- 200:通用成功响应
- 201:POST 方法成功响应
- 400:服务器无法处理的不正确请求
- 404:未找到资源
信息正文
响应正文包含资源表征。服务器根据请求头包含的内容选择合适的表征格式。客户端可以以 XML 或 JSON 格式请求信息,这些格式定义如何以纯文本方式编写数据。例如,如果客户端请求名为 John 的人员的姓名和年龄,则服务器返回如下 JSON 表征:
‘{“name”:”John”, “age”:30}’
头
响应也包含有关响应的头或元数据。它们提供有关响应的更多背景内容,包含服务器、编码、日期和内容类型等信息。