设计安全的用户身份验证和授权逻辑需要绝对清晰。从多因素认证(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图表语法而设计,错误率极低。












