跳至正文
Read this post in: de_DEen_USes_ESfr_FRhi_INid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW
Home » AI » 用户身份验证与 OAuth 2.0 流程活动图

用户身份验证与 OAuth 2.0 流程活动图

A two-column hero banner graphic for a guide on visualizing secure user authentication. The left side features bold white text on a blue background: 'USER AUTHENTICATION & OAUTH 2.0 FLOWS' and 'Mastering Multi-Factor Auth, PKCE & Diagram-as-Code.' The right side displays a clean, blended technical activity diagram (image_2.png style) or schematic layout (image_4.png style) illustrating a complete OAuth 2.0 process flow with secure nodes and tokens, using a blue and white color scheme.

设计安全的用户身份验证和授权逻辑需要绝对清晰。从多因素认证(MFA)循环到带有 PKCE 的 OAuth 2.0 授权码授予,可视化令牌交换和安全边界可以防止关键的实现缺陷。本指南提供了逐步的 UML 活动图示例、PlantUML 源代码以及系统架构师和开发人员可直接使用的 AI 提示。



示例 1:带 MFA 的标准用户名/密码登录

此活动图描绘了完整的凭据验证流程,包括暴力破解速率限制和多因素认证(MFA)令牌验证。

关键建模概念:

  • 泳道划分:将用户界面(客户端应用)、API 后端以及数据库/身份提供商分开。
  • 条件守卫条件:评估密码有效性及账户锁定状态。

PlantUML 代码:

@startuml
|客户端应用程序|
start
:输入用户名和密码;
:点击“登录”;

|认证 API|
:验证请求负载;
if (速率限制已超出?) then ([是])
  |客户端应用程序|
  :显示“请求过多”提示;
  stop
else ([否])
  |数据库/身份提供商|
  :获取账户及密码哈希值;
endif

|认证 API|
if (密码匹配?) then ([否])
  :增加失败尝试计数;
  |客户端应用程序|
  :显示“凭据无效”错误;
  stop
else ([是])
  |认证 API|
  if (MFA 已启用?) then ([是])
    |客户端应用程序|
    :提示输入 6 位 MFA 验证码;
    :提交 MFA 验证码;
    |认证 API|
    if (MFA 有效?) then ([是])
      :生成会话令牌;
    else ([否])
      |客户端应用程序|
      :显示“MFA 验证码无效”错误;
      stop
    endif
  else ([否])
    |认证 API|
    :生成会话令牌;
  endif
endif

|客户端应用程序|
:安全存储 JWT 并重定向至仪表板;
stop
@enduml

AI 聊天机器人提示:

“生成一个带 MFA 的用户登录流程的 UML 活动图。使用泳道:客户端应用程序、认证 API 和数据库/身份提供商。检查速率限制,验证密码哈希值,并在发放会话令牌前,如果启用了 MFA,则提示输入 6 位验证码。”

示例 2:带 PKCE 的 OAuth 2.0 授权码流程

带有代码交换证明密钥(PKCE)的 OAuth 2.0 授权码授予是单页应用(SPAs)和移动应用的行业标准。可视化代码挑战和令牌交换可确保完全符合协议要求。

关键建模概念:

  • 并行生成:生成 code_verifier代码挑战在启动浏览器之前并发执行。
  • 跨域授权: 映射客户端、授权服务器和资源服务器之间的重定向。

PlantUML代码:

@startuml
|客户端应用(SPA)|
start
fork
  :生成PKCE代码验证器;
fork again
  :派生PKCE代码挑战(SHA256);
end fork
:使用挑战重定向浏览器至授权服务器;

|授权服务器|
:提示用户登录与授权;
|用户|
:批准作用域并授权;

|授权服务器|
:颁发短期授权码;
:重定向至客户端重定向URI;

|客户端应用(SPA)|
:提取授权码;
:将授权码 + PKCE代码验证器发送至令牌端点;

|授权服务器|
:验证代码验证器与代码挑战是否匹配;
if (验证成功?) then ([是])
  :颁发访问令牌与刷新令牌;
  |客户端应用(SPA)|
  :将访问令牌存储在内存中;
  :获取受保护的用户资料;
else ([失败])
  |客户端应用(SPA)|
  :显示授权错误;
endif
stop
@enduml

AI聊天机器人提示:

“创建一个用于带有PKCE的OAuth 2.0授权码流程的活动图。展示code_verifier和code_challenge的并行生成、重定向至授权服务器、用户授权、代码兑换以及令牌验证。”

示例3:JWT令牌验证与静默刷新流程

安全地管理API授权需要在每次请求时验证JSON Web令牌(JWT),并通过后台刷新令牌静默续订已过期的令牌,而不会影响用户体验。

关键建模概念:

  • 异步恢复循环: 当收到 401 未授权 响应被拦截时,请求新的访问令牌。
  • 会话过期处理: 当刷新令牌本身过期时,清除本地存储并重定向至登录页面。

PlantUML代码:

@startuml
|客户端应用|
start
:使用携带令牌的请求发送API请求;

|API网关|
:检查授权头;
if (令牌有效且未过期?) then ([有效])
  :将请求转发至微服务;
  |客户端应用|
  :接收API负载数据;
  stop
else ([已过期 / 401])
  |客户端应用|
  :拦截401错误;
  :将刷新令牌发送至授权端点;
  
  |授权API|
  if (刷新令牌有效?) then ([是])
    :颁发新的访问令牌;
    |客户端应用|
    :在内存中更新访问令牌;
    :重新尝试原始API请求;
    stop
  else ([已过期 / 已撤销])
    |客户端应用|
    :清除已存储的令牌;
    :将用户重定向至登录页面;
    stop
  endif
endif
@enduml

AI聊天机器人提示:

“生成一个展示JWT令牌验证与静默刷新的活动图。如果访问令牌有效,则提供API负载数据;如果已过期(401),尝试静默刷新令牌;如果刷新令牌也已过期,则清除本地存储并重定向至登录页面。”

安全与认证工作流的提示工程

在使用 AI活动图工具时,精确的措辞可确保正式的安全边界被清晰地映射:

  • 明确命名安全资产: 明确提及令牌、验证码和哈希值(例如,“JWT访问令牌”, “code_challenge”, “bcrypt 哈希”) 以便 AI 能够正确标记节点。
  • 定义正常路径和异常路径: 明确指定失败流程(例如,“如果 MFA 失败,显示错误。如果请求频率超过限制,返回 429 Too Many Requests”).
  • 指定信任边界: 使用泳道区分客户端执行(不受信任的浏览器/移动应用)与服务器端执行(受信任的 API 网关/数据库)。

在 Visual Paradigm 中实现 AI 生成与代码化图表的融合

设计安全架构需要快速迭代并配合严格的版本控制。该AI 绘图聊天机器人 在 Visual Paradigm 中提供完整的端到端工作流程:

  • 对话式认证图表生成: 使用复杂的安全部署协议提示 AI UML 工具,几秒钟内即可获得语法正确的 PlantUML 或 Mermaid 代码。
  • 使用 VPasCode 编辑: 将生成的认证图表直接导出到 VPasCode 以进行微调。
  • 在 OpenDocs 中的安全标准操作流程: 将活动图嵌入 OpenDocs,以构建全面的安全架构审查、开发者入职指南以及 SOC 2 / ISO 27001 审计文档。
  • 交互式会话共享: 与同行开发者和安全审计人员共享直接的聊天会话 URL,以快速获得协作反馈。

通过 VP Online 高级版 或在您的桌面 IDE 环境中使用 VP 桌面专业版.

常见问题

为什么在 OAuth 2.0 中选择 UML 活动图而非序列图?

虽然序列图在展示系统之间按时间顺序传递消息方面表现出色,但活动图在说明决策逻辑、条件性令牌刷新以及并发任务(如并行的PKCE哈希生成)方面更为优越。

我可以将生成的认证图导出并在VP桌面版中编辑吗?

可以。由AI绘图聊天机器人生成的图表可以直接在Visual Paradigm桌面版或Visual Paradigm在线版中打开和编辑,以进行进一步的视觉优化。

AI聊天机器人能否保证安全图的语法错误率很低?

可以。与通用的AI聊天工具不同,Visual Paradigm使用了专门训练过的模型,这些模型专为生成有效UML和PlantUML图表语法而设计,错误率极低。