深度解析 Wyn 商业智能 SSO 对接:实现用户权限一键打通的实战指南

在企业数字化转型的过程中,引入 BI 工具(如 Wyn 商业智能)的核心目标是服务于现有的业务系统。然而,开发者往往面临一个核心痛点:业务系统已有成熟的用户体系和权限架构,如何让用户在无需重复登录的前提下,还能在 BI 系统中沿用原有的组织架构与数据权限? 本文将结合 Wyn 商业智能的安全提供程序接口,为您拆解如何通过单点登录(SSO)实现系统间的深度集成与权限打通。

发布于 2026/06/10 16:43

Wyn 商业智能

前言

在企业数字化转型的过程中,引入 BI 工具(如 Wyn 商业智能)的核心目标是服务于现有的业务系统。然而,开发者往往面临一个核心痛点:业务系统已有成熟的用户体系和权限架构,如何让用户在无需重复登录的前提下,还能在 BI 系统中沿用原有的组织架构与数据权限?


本文将结合 Wyn 商业智能 的安全提供程序接口,为您拆解如何通过单点登录(SSO)实现系统间的深度集成与权限打通。

一、 为什么 BI 系统需要 SSO 权限对接?

通常情况下,BI 工具与业务系统是两套独立的用户体系。要实现深度集成,需要解决以下三个核心场景:

  1. 统一入口:用户使用业务系统账号即可直接进入 Wyn 系统页面。

  2. 权限同步:登录后,Wyn 系统需实时获取该用户的组织机构、角色信息,确保“看其该看,析其所有”(即行列级别的数据权限控制)。

  3. 无缝嵌入:第三方页面通过后端接口获取登录 Token,以 iframe 或 JS 组件形式无缝嵌入报表。

二、 核心架构:ISecurityProvider 接口体系

Wyn 提供了一套高度模块化的安全提供程序接口,允许开发者通过编写少量代码,将 Wyn 的用户模块重写为指向业务系统的逻辑。

核心接口介绍

  • ISecurityProvider:核心逻辑类,负责生成/校验 Token、获取用户角色、组织机构及上下文。

  • ISecurityProviderFactory:工厂类,负责根据外部配置(如 API 地址、数据库连接)初始化安全提供程序。

  • IExternalUserContext:用户信息访问器,用于获取用户的单值或多值属性(如所属区域、职级等)。

  • IExternalUserDescriptor:定义用户的基础属性,包括 ID、名称和提供程序类型。

前置配置逻辑

为了提高灵活性,Wyn 支持在前端页面直接修改集成配置(如数据库连接字符串或 API 接口地址)。这通过 ISecurityProviderFactorySupportedSettings 属性实现,开发者可以将配置项以 key:value 的形式赋给该对象,从而避免硬编码。

三、 三大实战场景解析

单点登录体系及用户场景


image

场景 1:用户身份验证与 Token 生成

image


当用户尝试登录 Wyn 时,系统会触发 GenerateTokenAsync 方法。

  • 基本思路:验证用户名密码后,生成一个 Token 作为用户信息的索引。

  • 实现方案

    • 加密存储:将用户信息加密后直接作为 Token,后续解密读取。

    • 容器映射:将用户信息放到内存(redis)Map(dict)容器中,token即为对应键值对的key,后续通过 get(key) 的方式来获取用户信息。

    • 参数编码:将第三方查询该用户信息的关键参数如 userId, userName 等参数编码为token, 后续通过解密为查询参数然后重新查询用户信息来获取。

场景 2:权限与上下文同步

image


Token 验证通过后,系统会通过该 Token 索引调用 GetUserRolesAsync(获取角色)和 GetUserOrganizationsAsync(获取组织机构)。

  • 上下文处理:使用 IExternalUserContext 构建用户信息访问器。通常建议在构建时内置一个 User 对象,通过 GetValueAsyncGetValuesAsync 动态返回用户属性。

场景 3:第三方调用获取 Token 接口

image


在某些嵌入式场景下,业务系统后台需要代用户获取 Token。


获取Token接口:


image


Wyn 提供了标准的 RESTful 接口:

//javascript fetch 代码
var myHeaders = new Headers();
myHeaders.append("Content-type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("username", "<username>");
urlencoded.append("password", "<password>");
urlencoded.append("grant_type", "<grant_type>");
urlencoded.append("client_id", "<client_id>");
urlencoded.append("client_secret", "<client_secret>");
urlencoded.append("tenant_path", "<tenant_path>");
urlencoded.append("access-token-lifetime", "<access-token-lifetime>");
var requestOptions = {
    method: 'POST',
    headers: myHeaders,
    body: urlencoded,
    redirect: 'follow'
};
fetch("http://localhost:51980/connect/token", requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log('error', error));

注意tenant_path 参数非常关键,它用于表示用户在 Wyn 中的组织机构角色路径,在生成 Token 时需要额外处理此参数以完成绑定。

四、 开发建议与最佳实践

在实际落地过程中,为了保证代码的可维护性,建议采取以下架构建议:

  1. 增加 Service 抽象层:在 ISecurityProvider 中不直接写死 SQL 或 API 调用,而是引入一个 Service 功能层。

  2. 解耦查询逻辑:Service 层下设基础查询层,专门负责数据库连接或 SDK 调用,使业务代码与底层查询完全无关。

  3. 处理跨域与 Cookie

    • 在高版本 Chrome 浏览器中,建议通过 URL 传参(?token=xxx)而非依赖 Cookie。

    • 推荐使用 Nginx 反向代理,将业务系统与 Wyn 配置在同一域名下,从根源解决跨域问题。

五、 总结

Wyn 商业智能通过高度模块化的 ISecurityProvider 接口,不仅实现了 SSO 单点登录,更深度解决了企业级集成中权限同步的难题。这种“原生感”十足的嵌入式分析能力,让 BI 能够真正“长”在业务系统里,助力企业快速构建数据驱动型组织。

Wyn 商业智能软件| 下载试用

Wyn 是西安葡萄城自主研发的嵌入式商业智能软件,能帮助企业用户发现更多的数据潜在价值,为管理者制定决策提供数据支撑。Wyn 具备完整的嵌入式分析能力,能够与其他软件深度集成,也可独立部署使用,快速提升数据展示和分析能力。

Wyn 支持公有云、私有云和本地部署等多种部署方式,并能在Java、.net、PHP等开发平台中使用。您可以将其与ERP、CRM、OA等业务系统,以及钉钉、企业微信等APP进行深度集成,持续交付BI和报表功能,助力您的客户发现数据的价值。

了解更多关于 Wyn 嵌入式商业智能软件的内容,请点击此处访问官网,立即下载体验。

相关产品
推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态