嵌入式 BI 实战(三):SSO 单点登录与用户上下文数据过滤

嵌入式 BI 实战(三):SSO 单点登录与用户上下文数据过滤 前言在 DIV 集成解决了视觉融合之后我们必须面对下一个挑战用户认证。如果客户已经登录了你的 SaaS 系统再弹出一个 Wyn 登录框不仅体验割裂更会让用户怀疑系统的专业性。而且对于企业用户来说业务系统和 BI 本身就是一个完整的业务流程。**用户应该只登录一次。**所以嵌入式 BI 的第一步不是重新设计登录页而是让 Wyn 识别当前业务系统中的用户。这就是 SSO 单点登录要解决的问题。一、SSO 单点登录告别二次登录Wyn 提供了多种单点登录方案从简单到复杂覆盖不同场景。方案一Token 传递最简单适用于快速对接。后端生成带有时效性的 Token 拼接到请求中Wyn 服务端验证后自动完成登录。步骤 使用系统管理员账号登录从系统后台生成对应用户的令牌并复制该令牌包含用户标识如 userid、username拼接到 iframe 的 URL 上HTMLhttp://localhost:51980/reports/view/d81b26d3-bb8e-4e7c-beeb-3c634205966b?themedefaultlngzh-CNtoken69A6A52C8C8DD6B6C88CEE4172CCBB53D9E3CBEAFB18B710DEB680594ADE70C7适用场景 内部系统快速验证、POC 演示。局限 Token 长期有效安全性依赖 URL 保密无法动态传递用户上下文如角色、部门。方案二自定义安全提供程序企业级若您的系统已有成熟的用户体系可通过实现 Wyn 的安全提供程序接口让 Wyn 在收到请求时回调您的系统完成用户验证。该方案本质上是开发一个实现 Wyn 规定接口的 .NET 类库DLL编译后放入插件目录并在 Wyn 管理后台启用即可。核心接口体系Wyn 提供了一套高度模块化的安全提供程序接口开发者只需编写少量代码即可将 Wyn 的用户认证逻辑重写为指向业务系统的实现ISecurityProvider核心逻辑类负责生成/校验 Token、获取用户角色、组织机构及上下文信息。ISecurityProviderFactory工厂类负责根据外部配置如 API 地址、数据库连接字符串初始化安全提供程序实例。IExternalUserContext用户信息访问器用于获取用户的单值或多值属性如所属区域、职级等。IExternalUserDescriptor定义用户的基础属性包括 ID、名称和提供程序类型。前置配置灵活性为提高适配效率Wyn 支持在前端页面直接修改集成配置如数据库连接字符串或 API 接口地址无需重新编译。这一能力通过ISecurityProviderFactory的SupportedSettings属性实现——开发者可将配置项以key:value形式暴露给该对象从而避免硬编码极大提升了部署和运维的灵活性。配置完成后用户访问 Wyn 时系统会通过 Cookie 或 Header 中的票据自动回调您的认证服务实现无感登录。适用场景企业级系统、已有成熟用户体系、需深度集成的项目。方案三OAuth 2.0 / CAS / OIDCWyn 支持对接 OAuth 2.0 授权服务器如 Azure AD、Okta、Auth2.0。用户在 Wyn 登录页点击企业登录跳转到企业统一认证页面认证通过后自动回调登录 Wyn。适用场景中大型企业、已有统一身份认证平台。配置方式在 Wyn 系统管理后台的系统设置「系统配置 → 单点登录」中选择对应的认证协议来配置无需改动业务代码。二、行级数据权限的传递千人千面的数据安全无论是哪种 SSO 方案登录成功后你都可以将用户的角色、部门、区域等信息传递给 Wyn。Wyn 的数据源中可以根据这些信息动态过滤数据。例如你的用户表中有一个区域字段那么在 Wyn 的数据集 SQL 中可以这样写sqlSELECT * FROM 销售表 WHERE 区域 {区域}Wyn 在执行查询时会从当前登录用户的上下文中获取区域这个参数的值实现不同区域的人看到不同的数据。进阶多维度权限控制除了区域你还可以传递更多上下文sql*-- 多维度权限控制示例*SELECT * FROM 销售表 WHERE 区域 {区域} AND 部门 {部门} AND 角色 IN ({角色})三、结语SSO 解决了谁可以看的问题行级权限解决了可以看什么的问题。两者结合你的 SaaS 系统才能真正实现安全的数据分析能力。但如果你想让客户不仅能看还能自己做——在系统里拖拽设计报表怎么办下一篇我们将介绍 Wyn 的嵌入设计器与 OEM 白标能力。