Fabric应用包括一种内置身份验证服务,用于让用户登录、管理会话,并将其标识附加到应用发出的每个数据和存储调用。 本文介绍在为项目配置身份验证之前需要了解的概念。
有关实现详细信息,请参阅:
- 为 Fabric 应用配置 Fabric SSO 身份验证 – 适用于已部署应用的登录和注册代码
- 定义数据权限 - 使用登录用户的标识来控制数据访问。
身份验证模式
Fabric应用支持两种身份验证方法。 使用的方法取决于应用运行的位置:
| 环境 | 支持的方法 | 何时使用它 |
|---|---|---|
| 地方发展 | 电子邮件和密码 | 无需依赖 Fabric 门户即可快速迭代。 |
| 部署到 Fabric | Fabric SSO (Microsoft Entra ID) | 任何有权访问你的 Fabric 工作区的用户都可进行生产环境登录。 |
关键概念:
- Fabric SSO 使用用户现有的 Microsoft Entra ID 身份,通过 Fabric 门户让用户登录。 它仅在从Fabric打开应用时才有效,因此不能在本地开发期间使用它。
- 电子邮件和密码 仅适用于本地开发。 部署后它不起作用。
- 首次登录时会为用户完成预配。 使用 Fabric SSO 时,没有单独的注册步骤 - 用户首次登录时会自动创建。
- Fabric部署需要身份验证。 将
services.auth.enabled设置为false会导致npx rayfin up失败。
会话和标识
用户登录后,SDK 将创建表示已登录用户的 会话 。 会话是不透明的——你的应用不应检查底层令牌。 而是,你的应用会读取一组少量的高层属性:
- 会话当前是否经过身份验证。
- 用户的
id和email。 - 您在
rayfin.yml中配置的自定义声明。
对用户进行签名的同一客户端实例会自动将其标识附加到每个数据和存储调用。 不会手动传递令牌。
会话还会引发更改事件,因此当用户登录或注销时 UI 可以做出反应,而无需重新加载页面。
在项目中启用身份验证
身份验证在 rayfin/rayfin.yml 中配置。 以下示例启用 Fabric SSO(适用于已部署的应用)和电子邮件/密码登录(用于本地开发):
services:
auth:
enabled: true
allowedRedirectUris:
- http://localhost:5173
fabric:
enabled: true
password:
enabled: true # Local development only
每个设置控制的内容:
-
services.auth.enabled– 打开身份验证服务。 这是任何 Fabric 部署所必需的。 -
allowedRedirectUris– 登录后允许接收用户的源。 在此处添加本地开发 URL。npx rayfin up自动添加已部署的应用源。 -
fabric.enabled– 启用Fabric SSO。 已部署的应用必需此项。 -
password.enabled– 启用用于本地开发的电子邮件和密码登录。
Important
Fabric部署需要启用身份验证。 当 services.auth.enabled 设置为 false 时,npx rayfin up 失败。
编辑 rayfin.yml后,重启本地后端或运行 npx rayfin up 以应用更改。
自定义声明
使用自定义声明可将特定于应用程序的元数据附加到每个会话,例如租户名称、功能标志或应用版本。 它们可用于基于角色的访问控制和功能限制,而无需更改数据模型。
services:
auth:
enabled: true
customClaims:
tenant: default
app_version: 1.0.0
自定义声明显示在会话对象内,可以从数据权限规则中引用。
SDK 提供的内容
使用 RayfinClient 时,身份验证服务可在 client.auth 上使用。 在概念级别,它提供:
- 在本地开发期间,使用电子邮件和密码注册和登录。
- 通过 Fabric SSO 登录和注册已部署的应用。 同一调用同时处理新用户和返回用户。
- 注销 以结束当前会话。
- 会话读取和订阅 ,以便 UI 与用户的身份验证状态保持同步。
有关将这些内容接入实际应用的代码,请参阅 为你的 Fabric 应用配置 Fabric SSO 身份验证。