本文已使用 Google Cloud Translation API 自动翻译。
某些文档最好以原文阅读。
单页应用程序和移动客户端的兴起引领了后端安全的新时代。过去,大多数后端应用程序都是服务器端呈现的,这意味着服务器生成 HTML 并将其发送到客户端。这意味着所有敏感数据都保存在服务器上,客户端只能看到 HTML。
如今,通过客户端呈现,客户端可以访问数据,并且 HTML 是在客户端生成的。这意味着数据在服务器上不再安全,必须受到保护。
保护数据的一种方法是使用 OAuth。 OAuth 是一种授权协议,允许用户授予第三方应用程序访问其数据的权限。然后,第三方应用程序将拥有可用于访问数据的访问令牌。
另一种保护数据的方法是使用 JSON Web Tokens (JWT)。 JWT 是一种在 JSON 对象中编码数据的标准。然后使用密钥对数据进行签名,任何拥有该密钥的人都可以对其进行解码。
OAuth 和 JWT 各有优缺点。 OAuth 更安全,但 JWT 更容易实现。在本文中,我们将学习如何使用 OAuth 和 JWT 来保护后端应用程序。
OAuth 是一种授权协议,允许用户授予第三方应用程序访问其数据的权限。然后,第三方应用程序将拥有可用于访问数据的访问令牌。
OAuth 比 JWT 更安全,因为它使用授权码。授权码仅对单次使用有效,然后失效。这意味着如果黑客获得授权码,他们将只能使用一次。
另一方面,JWT 使用刷新令牌。刷新令牌的有效期更长,可用于生成新的访问令牌。这意味着如果黑客获得刷新令牌,他们可以继续生成新的访问令牌并获得对数据的访问权限。
OAuth 也更安全,因为它使用 SSL。 SSL 是一种加密数据的协议。这意味着如果黑客拦截数据,他们将无法读取数据。
JWT 不使用 SSL。这意味着如果黑客拦截数据,他们将能够读取数据。
要使用 OAuth,您需要向 OAuth 提供商注册您的应用程序。然后,提供商会给您一个客户端 ID 和一个客户端密码。客户端 ID 用于标识您的应用程序,客户端密码用于对您的应用程序进行身份验证。
然后,您需要将用户重定向到提供商的授权页面。然后将要求用户授予您的应用程序访问其数据的权限。
如果用户授予您的应用程序访问权限,提供商将使用授权代码将用户重定向到您的重定向 URI。然后,您的应用程序将使用授权代码向提供商请求访问令牌。
然后,提供商将向您的应用程序返回一个访问令牌。然后,您的应用程序可以使用访问令牌来访问数据。
JWT 是一种在 JSON 对象中编码数据的标准。然后使用密钥对数据进行签名,任何拥有该密钥的人都可以对其进行解码。
JWT 比 OAuth 更容易实现,因为它不需要您向提供商注册您的应用程序。您将需要生成一个密钥,这可以使用 OpenSSL 等工具来完成。
要使用 JWT 对数据进行编码,您需要对数据进行 base64 编码。然后可以使用密钥对数据进行签名。然后可以对签名进行 base64 编码。然后可以将数据、签名和密钥连接起来并放入一个 JSON 对象中。
然后可以将 JSON 对象传递给客户端。然后客户端可以解码数据并验证签名。如果签名有效,则数据可以被信任。
要解码数据,客户端将需要密钥。这意味着您需要将密钥发送给客户端,从安全角度来看这并不理想。
OAuth 和 JWT 各有优缺点。 OAuth 更安全,但 JWT 更容易实现。在本文中,我们学习了如何使用 OAuth 和 JWT 来保护后端应用程序。