基于令牌的身份验证

基于令牌的身份验证是一种安全技术,用于验证尝试访问服务器的用户身份。该功能自 v11.0.3 版本起可用。服务会验证安全令牌并处理用户请求。

它是如何工作的?

身份验证是应用程序确认用户身份的过程。传统上,应用程序通过会话 Cookie 来维持身份,依赖于存储在服务器端的会话 ID。这迫使开发者创建会话存储,要么每台服务器单独存储,要么实现一个完全独立的会话存储层。

令牌身份验证是一种更现代的方法,旨在解决服务器端会话 ID 存储机制无法解决的问题。使用令牌代替会话 ID 可以降低服务器负载。

令牌的增删改查

作为开发者,您可以使用令牌执行完整的增删改查操作。
一旦生成了令牌,该令牌就可以用于授权您的用户发出的各个请求,这些请求会传递到您的应用程序中。您的应用程序将验证随每个请求一起发送的令牌。

API 密钥和 API 秘钥的组合构成一个令牌,该令牌用于在您的应用程序中进行身份验证,并且可以用于验证 RPC 和 REST API 的请求。

生成令牌

您可以为每个用户生成一个 api-key 和一个 api-secret,它们共同构成一个令牌。

  • api-key:用于标识用户身份。
  • api-secret:用于验证请求。

可以通过 Web 界面、命令行或远程过程调用(RPC)来生成 api-key 和 api-secret:

  • RPC 方式:
    /api/method/frappe.core.doctype.user.user.generate_keys?user="user_name"
  • 命令行方式:
    bench execute frappe.core.doctype.user.user.generate_keys --args ['user_name']
  • Web 方式:
    用户 -> API 访问 -> 生成密钥

请查看 Guides / Integrations / Rest Api / Token Based Authentication 了解如何在 API 请求中使用该令牌。

注意:

  1. API 密钥无法重新生成。
  2. 只有具有系统管理员角色的用户才能生成密钥。