身份验证 (Authentication)¶
概览¶
该应用程序使用 Microsoft Entra ID (原 Azure AD B2C) 进行身份验证,并通过适用于 React 的 MSAL (Microsoft Authentication Library) 实现。
流程¶
sequenceDiagram
participant U as 用户浏览器
participant F as React 前端
participant M as Microsoft Entra ID
participant A as Azure Functions API
U->>F: 访问应用程序
F->>M: 重定向至登录页面
M->>U: 显示登录表单
U->>M: 输入凭据
M->>F: 返回 ID 令牌 (ID Token) + 访问令牌 (Access Token)
F->>F: 通过 MSAL 存储令牌
F->>A: 发送 API 请求 + X-User-Token 请求头
A->>A: 验证 JWT, 提取声明 (Claims)
A->>A: 在 app_users 表中查找用户
A->>F: 返回对应角色的数据
用户表 (app_users)¶
| 列名 | 描述 |
|---|---|
| Microsoft 帐户电子邮件 (唯一) | |
| display_name | 用户显示名称 |
| role | 角色: Vendor, Manager, 或 Admin |
| vendor_code | 针对 Vendor 角色: 关联的账单公司名 |
| is_active | 帐户启用/禁用状态 |
基于角色的数据访问控制¶
- 供应商 (Vendor): 仅能查看
billing_company与其vendor_code匹配的采购订单。 - 经理 (Manager): 可以查看所有采购订单。
- 管理员 (Admin): 可以查看所有采购订单并管理用户。
前端配置¶
认证设置位于 frontend/src/authConfig.ts:
clientId— Azure AD 应用程序注册 IDauthority— Azure AD B2C 租户权限 URLredirectUri— 应用程序重定向 URI