在 Web 应用程序开发过程中,RESTful API 已经成为了常见的 M端和S端间的交互方式。随着 RESTful API 的广泛应用,认证和授权机制变得越来越重要。在本文中,我们将会详细讨论 RESTful API 认证与授权方式。
什么是 RESTful API?
RESTful API 是 Representational State Transfer(表现层状态转移)的缩写。是互联网应用程序的一种设计和开发方式,采用统一的行为语义和 HTTP 协议进行交互。其中,“表现层”指的是 API 返回数据的格式,由于 RESTful API 的格式在大多数情况下是 JSON,因此 RESTful API 很容易被 Web 应用程序的客户端相互调用和交互。
RESTful API 的认证与授权方式
在 Web 应用程序开发过程中,认证和授权是不可或缺的一部分。通过认证和授权机制,开发人员可以确保系统安全并保护敏感数据不被恶意用户或未经授权的用户访问。
基于 Token 的认证与授权
基于 Token 的认证和授权机制是一种常见的 RESTful API 认证与授权方式。 在这种方式中,当用户授权登录时,Web 服务器为该用户生成一个 Token。以后,用户每次向 Web API 发送请求时,都需要在请求头部中添加 Token。Web 服务器使用用户的 Token 校验该值,如果它是有效的,则将用户的请求发送到 Web API。
Token 生成方法
使用 JSON Web Token(JWT)作为用户 Token,这是一种使用 HMAC 算法或公钥/私钥对进行签名的 Token。生成 JWT Token 的示例代码如下:
var jwt = require('jsonwebtoken'); var privateKey = 'myprivatekey'; function generateToken(userData) { var token = jwt.sign(userData, privateKey, { expiresIn: '24h' }); return token; }
Token 验证
Web 服务器应检查该 Token 是否有效,以确定已登录用户的身份。下面是验证 JWT Token 的示例代码:
-- -------------------- ---- ------- --- --- - ------------------------ --- ---------- - --------------- -------- -------------------- --------- ----- - --- ----- - ------------------------------------- ------ ----------------- ----------- ------------- -------- - -- ----- - ------ --------------------------- -------- -------- ------ --- - --------------- - -------- ------- --- -
Token 的存储和销毁
将 Token 存储在用户端是一种广泛使用的方法,因此,即使在刷新页面时,Token 仍然存在。这样便于用户在刷新页面后,自动重新登录进行操作。
Token 的销毁是需要考虑的,当用户注销或 Token 过期时,该 Token 应当被销毁。如果 Token 长期存在,则用户帐号可能会有所危险。 Token 的销毁示例如下:
-- -------------------- ---- ------- --- --- - ------------------------ --- ---------- - --------------- -------- --------------------- --------- - --- ----- - ------------------------------------- ------ ----------------- ----------- ------------- -------- - -- ----- - ------ --------------------------- -------- -------- ------ --- - --------------- - -------- -- -- ----- ---------------------- - ---------- - ----- --------------------------- -------- ------ ---------- --- --- -
基于 OAuth 的认证与授权
OAuth 是一种通过授权代理来允许第三方应用程序访问用户受保护的资源的开放标准。第三方应用程序使用 OAuth 认证和授权,以处理用户的数据。
在 OAuth 中,用户登录授权源网站(例如,Facebook、Twitter),授权源网站向第三方应用程序授予访问用户受保护的数据的权限,并将访问令牌返回给第三方应用程序。第三方应用程序可以使用这个令牌来访问用户受保护的数据。在这种情况下,OAuth 提供了一种机制,允许用户掌控他们个人信息的使用,同时保护用户的数据安全。
基于 HTTP 身份验证的认证与授权
HTTP 身份验证是一种最简单和最常见的身份验证和授权机制。在这种方式中,用户在登录时通过向 Web 服务器发送用户名和密码,或其他凭据。Web 服务器使用这些凭据验证用户的身份,如果凭据有效,则向用户返回一个认证令牌(例如,Cookie)。然后,用户请求将会带上认证令牌,Web 服务器在每个请求中也会验证一次令牌。如果用户的令牌过期或无效,则 Web 服务器会拒绝请求。
HTTP 身份验证的示例如下:
-- -------------------- ---- ------- ----- ------- - ------------------- --- ------- - --------------------------- ----- --- - ---------- ----------------- ------- ---------------- ------- ------ ------------------ ---- ---- ------------------ ------------- ---- - -- ---- ---------------- - ----- ---------- -------- ------ --- --- ---------------- ------------- ---- - -- ---- -- ----------------- --- ---------- - ---------- -------- --------------- --- - ---- - ---------- ----- ----------- --- - ---
总结
在 Web 应用程序开发过程中,认证和授权是必不可少的。本文介绍了 RESTful API 认证和授权的几种方式,包括基于 Token 的认证和授权、基于 OAuth 的认证和授权、以及基于 HTTP 身份验证的认证和授权。每种方式都适用于不同的情况和要求,因此开发人员需要根据实际情况选择适合自己的方式。
参考资料
- JWT Authentication Tutorial: An Example-Based Guide
- The OAuth 2.0 Authorization Framework
- HTTP Authentication
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6454c954968c7c53b088ceca