集成应用免登对接示例

概述

任务简介

本文档说明如何将简道云当前登录用户的用户名动态传递给 FineBI,实现不同用户单击「进入应用」后分别以各自对应的 FineBI 账号登录,保留 FineBI 内的数据权限隔离。

本文仅讲解具体实现示例,接口理论请参考:集成应用免登对接说明

注:简道云仅负责提供接口,帮助获取经过验证的用户身份信息(如用户编号),第三方系统需自行搭建获取服务,以及维护本系统的登录态(Session、Token、Cookie 等)。

整体流程

理解此方案的核心机制,有助于正确完成各步骤配置。整体流程如下:

1)用户在简道云单击「进入应用」,简道云将用户跳转到配置的「应用首页」(即中转服务),并在 URL 中附加 code 参数。

2)中转服务接收请求后,提取 code,调用简道云 API 换取当前简道云企业成员的编号。

3)中转服务将用户重定向至 FineBI 免登地址,URL 中携带获取到的简道云企业成员编号,作为 FineBI 用户名。

4)FineBI 识别 URL 参数,以该用户名自动完成登录。

示例环境说明

1)本文示例基于 PHP 中转服务实现免登对接,适用于以下部署架构:运维平台部署的FineBI项目、Tomcat部署包部署的FineBI项目。其他方式部署的FineBI项目不确保可行。

  • 如果你的FineBI部署架构不在上述适用范围内,或无法在现有架构中配置 PHP 运行环境,建议改用 Java 或其他语言自行实现中转服务逻辑。
  • 中转服务的核心功能是:接收简道云传入的 code 参数,调用简道云 API 换取用户编号,然后重定向至 FineBI 免登地址。实现语言不限,只要能完成上述流程即可。

2)本文所有操作步骤基于以下示例环境演示。实际操作时,请将表格中的示例值替换为你自己环境的实际值。

内容

示例说明

用户要求

FineBI 用户名与简道云成员编号保持一致

  • 简道云中存在成员编号为「F000020」的用户
  • FineBI中存在用户名为「F000020」的用户

环境要求

FineBI 工程和中转服务满足以下条件:

  • FineBI工程、中转服务与简道云支持公网访问。
  • FineBI 支持安装后台单点登录插件

地址信息

FineBI工程地址:https://demo.fanruan.com/webroot/decision

中转服务地址:https://demo.fanruan.com/help/sso.php

前提条件

开始配置前,请确认以下条件已满足。

简道云端

1)检查操作用户权限:仅简道云企业创建者与系统管理员支持配置集成应用

2)检查简道云版本:企业版及以上简道云支持集成应用功能。版本升级可点击:商务咨询

FineBI 端

1)检查操作用户权限:仅 FineBI 超级管理员支持配置后台单点登录

2)检查中转服务所在环境:中转服务已开启 HTTPS 并配置可信域名(本文将中转服务放在了 FineBI 工程中,确保 FineBI 工程满足该条件即可)

3)确保 FineBI 关闭「点击劫持攻击防护」:允许 FineBI 页面被嵌入简道云中显示

4)确认中转服务所在服务器已安装并启用 PHP 运行环境:本方案的中转服务基于 PHP 文件实现,服务器必须具备 PHP 解析能力。FR/BI 的标准部署包为 Java 服务,默认不包含 PHP 环境,请确认服务器已单独安装 PHP(推荐 PHP 7.0 及以上版本),且 Web 服务器(Nginx/Apache 等)已配置 PHP 解析支持

简道云与 FineBI

1)检查用户匹配情况

简道云成员编号与 FineBI 用户名一一对应。

2)确认网络联通性

为实现单点登录,简道云服务端与中转服务必须网络互通(由于中转服务部署在FineBI服务器中,两者默认联通)

  • 用户在简道云单击「进入应用」,简道云将用户跳转到配置的「应用首页」(即中转服务),并在 URL 中附加 code 参数。此步骤要求简道云服务端能通过网络访问到中转服务地址。
  • 中转服务接收请求后,提取 code,调用简道云 API 换取当前简道云企业成员的编号。此步骤要求中转服务能通过网络访问到简道云 API 地址(公网)。

如果中转服务部署在纯内网环境中,请自行开放网络白名单,否则集成将无法生效。

第一步:在 FineBI 配置后台单点登录插件

此步骤开启 FineBI 对 URL 参数免登的支持。

1)在 FineBI 中进入「管理系统 > 插件管理」,安装「后台单点登录」插件。

2)安装完成后,进入「管理系统 > 系统管理 > 集成后台单点登录」页面。

3)在登录方案中选择「示例接口」,单击「保存」。

4)完成后,FineBI 接受通过 ?fine_username=用户名 参数传入的用户名进行免登。

注:本文为测试示例,因此使用了 FineBI 用户名明文传递方案,用户名暴露在 URL 和访问日志中,安全性相对较低。

在生产环境中,建议改用 FineBI 的 RSA 加密方案。详情请参见:后台单点登录RSA示例代码

第二步:在简道云创建集成应用

此步骤获取用于服务端身份验证的 Suite ID 和 Suite Secret。

1)登录简道云,进入「管理后台 > 基本信息 > 产品中心」页面。

2)单击「+ 集成更多应用」创建新的集成应用。

3)系统弹出「配置集成应用」对话框,填写配置信息,单击「创建」。

配置项

填写说明

应用名称

填写:FineBI

应用描述

填写:集成 FineBI,以当前登录用户身份免登访问

可信域名

填写:demo.fanruan.com

中转服务所在的域名。本文将 sso 中转服务文件上传到了 FineBI 所在服务器,因此域名与 FineBI 工程一致

应用首页

填写:https://demo.fanruan.com/help/sso.php

中转服务的接收地址。本文将 sso 中转服务文件上传到了 FineBI 工程的 help 文件夹下

4)单击「编辑」按钮,进入集成应用配置详情页。

5)复制自动生成的 Suite ID 和 Suite Secret,请将两项凭证妥善保存,供中转服务配置使用。

第三步:部署中转服务

此步骤在企业服务端部署中转服务,完成简道云 code 的接收、用户信息的获取和到 FineBI 的跳转。

本文将中转服务放在了 FineBI 工程中,如不满足此条件,本文示例的中转服务配置不适用。

注意: 本方案的中转服务文件 sso.php 需要 PHP 运行环境支持。

FR/BI 标准部署包为 Java 服务,默认不包含 PHP 环境。部署前请先确认服务器已安装 PHP 且 Web 服务器已配置 PHP 解析,否则上传后的 PHP 文件将无法被正确解析。

1)准备 sso.php 文件

点击下载并解压,获得 sso.php 文件:sso.zip

修改以下内容并保存。

  • https://你的FineBI域名:修改为你的FineBI工程地址。示例修改为https://demo.fanruan.com
  • your_suite_secret_here:替换为第二步中获取的 Suite Secret
  • your_suite_id_here:替换为第二步中获取的 Suite ID
  • /webroot/decision:FineBI路径,一般无需修改
  • /help/sso.php:php文件在FineBI工程webroot下的存储路径。即下一步的存储路径/help/sso.php

2)上传 sso.php 文件

将 sso.php 文件上传到 FineBI 工程的 webroot/help 文件夹下。

如果 FineBI 是多节点集群,有多个 bi-web 服务,需要分别上传到每个 bi-web 节点的 help 文件夹下。

注意:

  • 对于运维平台部署的FineBI项目:默认在 bi-web 组件的外挂目录下存在 help 文件夹,请勿手动创建。
  • 对于非运维平台部署的FineBI项目:若在 webroot 下未找到 help 文件夹,手动新建即可。

3)验证 sso.php 文件配置成功

访问 https://你的FineBI域名/help/sso.php

页面返回「缺少 code 参数」即说明文件部署成功,等待简道云传入 code 后可完整跑通。

第四步:启用集成应用

此步骤开启集成能力,并完整验证从简道云点击到进入 FineBI 的全流程。

在产品中心的 FineBI 集成应用卡片右侧,将开关切换至开启状态。

第五步:免登录效果展示

1)用户编号为「F000020」的用户,在简道云「产品中心」中单击「进入应用」。

2)浏览器地址跳转至中转服务地址,URL 中包含 code 参数。

3)中转服务处理完成后,浏览器跳转至 FineBI 。

3)FineBI 以当前简道云登录用户编号「F000020」作为用户名,自动完成登录。

文档内容是否对您有帮助?
有帮助
没帮助没帮助
如需获取即时帮助,请联系技术支持
咨询
扫码领取100+零代码资料简道云官方微信号400-111-0890
图标在线咨询
立即体验