0Pricing
AI SaaS Builder · 课时

用户身份验证与授权

实现安全的登录系统,并控制用户对不同功能和数据的访问权限。

用户身份验证与授权 是 CoddyKit 上的免费 AI SaaS Builder 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI SaaS Builder 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI SaaS Builder 课程共包含 4 节课。

欢迎学习安全访问!

在本课中,我们将深入了解用户身份验证和授权。对于任何安全应用,尤其是 AI SaaS 而言,这些机制都至关重要,可确保只有正确的用户才能访问相应的功能。

您可以把它们想象成专属 AI 俱乐部的保安和宾客名单!

证明您的身份

身份验证(AuthN)是验证用户身份的过程。它回答的问题是:“您是您所声称的那个人吗?”

  • 用户名/密码:最常见的方法。
  • OAuth:使用 Google、Facebook 等账号登录。
  • 生物识别:指纹、人脸 ID。

完成身份验证后,系统就知道您是谁了。

您可以执行哪些操作?

授权(AuthZ)决定经过身份验证的用户可以执行哪些操作或访问哪些内容。它回答的问题是:“既然我们知道您是谁,那么您拥有哪些权限?”

例如,管理员用户可能可以访问所有设置,而普通用户只能查看自己的数据。

保护密码安全

绝不要以明文存储用户密码!相反,请使用一种称为哈希的单向加密函数。哈希会将密码转换为固定长度的字符字符串。

即使您的数据库遭到入侵,攻击者也无法获得实际密码,只能得到密码的哈希值。您无法通过哈希值反推出原始密码。

哈希实践

下面是一个经过简化的 Java 示例,用于演示密码可能是如何进行哈希处理的。实际应用会使用 bcrypt 或 Argon2 等更强大的算法,并且通常会加入“盐值”来进一步增强安全性。

请尝试运行此示例:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.nio.charset.StandardCharsets;

public class Main {
  public static void main(String[] args) {
    String password = "mySecretPassword123";
    try {
      MessageDigest digest = MessageDigest.getInstance("SHA-256");
      byte[] encodedhash = digest.digest(
        password.getBytes(StandardCharsets.UTF_8));

      StringBuilder hexString = new StringBuilder(2 * encodedhash.length);
      for (int i = 0; i < encodedhash.length; i++) {
        String hex = Integer.toHexString(0xff & encodedhash[i]);
        if(hex.length() == 1) {
          hexString.append('0');
        }
        hexString.append(hex);
      }
      System.out.println("Original: " + password);
      System.out.println("Hashed:   " + hexString.toString());
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
  }
}

传统会话

许多 Web 应用使用基于会话的身份验证。用户登录后,服务器会创建一个唯一的会话 ID,将其存储起来(通常存储在数据库中),然后以 Cookie 的形式发送给客户端。

后续请求中,客户端会发送会话 ID,服务器则对其进行验证。这种方法将状态保存在服务器上。

认识 JWT

对于可扩展的 API,尤其是微服务,JSON Web Token(JWT)非常受欢迎。JWT 是无状态的,这意味着服务器无需存储会话信息。

JWT 包含有关用户的信息(声明),由服务器进行签名后发送给客户端。客户端会在每个请求中携带它。

JWT 的结构

JWT 由三个部分组成,各部分之间使用句点分隔:

  • 标头:包含令牌类型(JWT)和签名算法(例如 HS256)。
  • 载荷:包含用户 ID、角色、过期时间等“声明”。
  • 签名:用于验证令牌是否被篡改。它使用标头、载荷和密钥创建。

签名是安全性的关键。

使用 RBAC 管理访问权限

基于角色的访问控制(RBAC)是一种常见的授权模型。系统会为用户分配角色(例如“管理员”“编辑者”“查看者”),并为角色授予执行特定操作的权限。

  • 管理员:可以创建、读取、更新和删除任意数据。
  • 编辑者:可以创建和更新自己的数据。
  • 查看者:只能读取数据。

这样可以简化对大量用户权限的管理。

API 授权逻辑

在您的后端中,用户通过身份验证后,您需要检查其对特定 API 端点的授权情况。这通常涉及中间件或拦截器,它们会:

  1. 从用户的 JWT 或会话中提取其角色和权限。
  2. 检查用户的角色是否拥有执行请求操作的权限。
  3. 如果没有,则拒绝访问(例如返回 403 禁止访问错误)。

快速检查

请设想一位用户尝试访问您的 AI SaaS 中的高级功能。

保护您的后端

做得很好!您已经学习了用户身份验证和授权的基本概念。

  • 身份验证:验证用户“是谁”。
  • 授权:决定用户“可以做什么”。
  • 我们还了解了安全的密码哈希处理、基于会话与无状态 JWT 身份验证的区别,以及用于管理权限的 RBAC。

正确实现这些机制,对于构建安全且具备良好扩展能力的 AI SaaS 后端至关重要!

常见问题解答

「用户身份验证与授权」课时是免费的吗?

是的 — 「用户身份验证与授权」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI SaaS Builder 课程的其余内容,请升级到 CoddyKit PRO。 AI SaaS Builder 课程共包含 4 节课。

「用户身份验证与授权」这节课中我会学到什么?

实现安全的登录系统,并控制用户对不同功能和数据的访问权限。 你通过在浏览器中直接运行的动手代码来练习 AI SaaS Builder,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI SaaS Builder 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI SaaS Builder 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「用户身份验证与授权」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI SaaS Builder 课中编写并运行代码吗?

能。每节 AI SaaS Builder 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 设计 RESTful API
  2. SaaS 数据库管理
  3. 用户身份验证与授权
  4. 人工智能请求的速率限制与排队
← 返回 AI SaaS Builder