反馈已提交

网络繁忙

SAML单点登录插件

  • 文档创建者:Tracy.Wang
  • 历史版本:25
  • 最近更新:Aaron.Wu 于 2025-11-19
  • 1. 概述

    1.1 版本

    报表服务器版本插件版本SAML版本说明
    11.0
    V1.0.12.0-
    11.0V1.0.22.0

    新增配置项:「开启debug模式」

    详见 3.2 节说明

    11.0V1.0.32.0

    新增字段填写完整性校

    默认开启「跨越SAML认证的请求-平台登录页」

    11.0V1.0.82.0新增支持登出 FineReport 时,账号同步从认证服务器中登出
    11.0V1.1.12.0

    新增支持登出认证服务器时,账号同步从 FineReport 中登出

    新增「账号匹配规则」,支持对解析的账号转大写/转小写后与平台用户匹配

    11.0V1.1.72.0「账号匹配规则」从选项改为通过公式进行定义

    1.2 功能

    用户需要实现通过 SAML 认证登录数据决策系统,本文提供配置 SAML 单点登录插件方案。

    用户可下载 SAML 单点登录插件,无需代码,简单快速地实现通过 SAML 认证登录数据决策系统的效果。

    注:远程设计时不走 SAML 认证,默认放行。

    2. 插件介绍

    2.1 插件下载

    请点击链接获取插件试用安装包:点击下载

    设计器插件安装方法请参见:设计器插件管理

    服务器安装插件方法请参见:服务器插件管理

    2.2 界面介绍

    安装插件后无需重启,超管进入平台,点击「管理系统>系统管理」,新增「SAML-SP配置」页面。

    1.png

    注:需注意以下几点:

    • 用户需要有「管理系统」权限,才可见配置页面。

    • 支持热部署,安装启用插件无需重启工程。

    • 修改配置无需重启工程。

    3. 操作步骤

    3.1 开启SAML单点登录

    点击「开启SAML单点登录」按钮,如下图所示:

    3.2 SAML配置

    填写设置项后,需点击「保存」按钮,如下图所示:

    注:未填写完配置会导致保存失败,如下图所示:

    各设置项介绍如下表所示:

    设置项说明是否必填
    开启SAML单点登录

    点击即可开启 SAML 单点登录功能

    开启后会加载 Filter 过滤器,用户访问原决策平台 URL 后,走单点逻辑

    注:无需重启。

    /
    开启debug模式

    点击即可开启插件 debug 模式

    开启后会将 SAML 单点登录过程中收集到的断言信息打印在 fanruan.log 的 error 级别日志中

    注:建议一般不开启,仅用于插件调试,开启后将会在日志中输出断言内容,可能包含账号、邮箱等信息。

    /

    IDP元数据

    写由身份认证工具提供的 IDP 原数据

    一般为 XML 格式的页面,这里需要填写页面所在的地址

    IDP唯一标识

    填写由身份认证工具提供的 IDP 唯一标识

    建议获取方式:从 IDP 元数据中寻找“entityID”这一关键词,后面的链接就是 IDP 唯一标识

    IDP SSO地址

    填写过滤器需要跳转到的 IDP 地址

    不同 IDP 过程的获取方式不同,需按照实际情况操作

    IDP公钥

    填写 IDP 发送断言时加密所用的公钥

    建议获取方法:从 IDP 元数据中寻找“ds:X509Certificate”这一关键词,关键词后面的字符串

    账号映射

    此项为辅助功能,非必要项

    可使用 IDP 用户联动的其他属性字段进行单点登录,默认或为空时使用 IDP 返回的“nameid”字段,可以配置成其他字段比如:username、email 等


    账号匹配规则

    V1.1.7 及之后版本此项修改为通过公式定义

    公式支持范围:

    1)大小写转换:

    • UPPER(SAMLUSER):解析的账号转大写之后,匹配平台用户进行单点

    • LOWER(SAMLUSER):解析的账号转小写之后,匹配平台用户进行单点

    • 为空:根据解析的账号直接匹配平台用户进行单点

    注1:以 SAMLUSER 代指 SAML 流程中获取到的 IDP 传递的原始账号。

    注2:兼容 V1.1.7 之前的版本,原选项中的「默认规则」、「转大写匹配」、「转小写匹配」分别转换为空、UPPER(SAMLUSER)、LOWER(SAMLUSER)。

    2)字符串拼接

    • 使用 + 拼接,例如:"alice"+"@gmail.com"

    • 使用 CONCATENATE 函数,例如:CONCATENATE("alice","@gmail.com")

    3)数据集函数

    只支持 value()、sql()、map() 这三个函数

    SP唯一标识填写服务提供商的标识,自行配置即可
    SP默认跳转地址

    填写 FineReport 工程的访问路径,url 到/decision 为止。

    例如:https://localhost:8443/webroot/decision

    SP证书

    上传加密所用证件,支持 crt、cer、pem 格式。

    注:此处证件仅用作加密,可自行生成证件或从证件服务商处获取。也可使用默认的证书:

    cert.zip

    SP私钥

    上传密钥文件,支持 key 格式。

    注:如「SP证书」处使用了文档提供的默认证书,此处需使用对应的 key 文件:

    rsa_private.zip


    生成元数据XML文件

    点击按钮,即可下载服务提供商所用的 MetaData.xml 文件

    将 MetaData 文件导入到身份认证服务即可自动生成一个新 SAML 实体

    如果 SP 相关的 5 个属性(IDP公钥、SP唯一标识、SP默认跳转地址、SP证书、SP私钥)存在空值则提示:“请将 SP 相关信息填写完整”


    开启SAML单点登出

    选择是否开启 SAML 单点登出功能

    开启后展示“SAML 单点登出地址”配置项

    SAML单点登出地址

    填写登出 IDP 的 API,实现登出 FineReport 同时登出 IDP

    例如:http://localhost:8080/auth/realms/FineReport/protocol/openid-connect/logout?redirect_uri=http://localhost:8075/webroot/decision/login 

    参数说明:

    • http://localhost:8080/auth/realms/FineReport/protocol/openid-connect/logout  为 IDP 的登出 API 部分

    • ?redirect_uri= 后面填写登出后跳转的位置,建议配置为 FineReport 登录页面

    跨越SAML认证的请求-HTML5请求

    是否放行 HTML5 请求

    开启后 HTML5 不需要进行 SAML 认证,不开启则只能通过 SAML 登录

    跨越SAML认证的请求-平台登录页

    开启后允许使用决策平台登录页进行登录

    注1:该配置默认开启。

    注2:如果不开启,则只能通过 SAML 登录, 且未开启 SAML 单点登出情况下,无法手动登出决策平台;如果开启跨越,则登出时会跳转到 FineReport 原本的登录页。

    注3:配置测试单点时建议开启,配置完成后若无需使用原平台登录页,请关闭该配置,否则原平台登录入口将保留,地址为原 URL+/login,例如:http://localhost:8075/webroot/decision/login。

    自定义请求放行

    自定义需要放行的请求,以分号 ; 隔开不同请求

    请求路径可以使用通配符

    字段值范例:/webroot/decision/t*;/webroot/decision/map/edit

    注:只配置 SAML 登录,未配置 SAML 登出时:

    未开启「平台登录页」:点击右上角的「退出」按钮,浏览器刷新下页面,不会登出。

    开启「平台登录页」:点击右上角的「退出」按钮,强制跳转到平台默认登录页,但是实际上没有登出平台,直接访问 http://ip:端口/工程名/decision,还是显示之前用户的登录状态。

    3.3 关闭SAML单点

    超管进入平台,点击「管理系统>系统管理>SAML-SP 配置」,关闭「开启SAML单点登录」按钮,点击「保存」,如下图所示:

    4. 范例-Azure AD

    注:如果需要执行从 Azure AD 发起的单一登录(例如从 Azure AD 的 My apps 单点到 FineReport 服务器),须首先配置 FineReport 工程为 HTTPS 访问。配置HTTPS 访问可参考:配置HTTPS

    4.1 填写SAML基础设置

    1)填写标识符(实体标识符)

    此项自定义即可,例如本文示例此处填了工作人员姓名 jade。

    2)填写回复 URL(判断断言消费者服务 URL)

    此项需要填写 FineReport 工程的访问路径(结尾到 decision)/sso/saml/acs,例如:https://localhost:8080/webroot/decision/sso/saml/acs

    3)填写登录 URL

    此项是 Azure AD 内的必填项,用于执行从 Azure AD 发起的单一登录。若需要执行从 Azure AD 发起到 FineReport 服务器的的单一登录(例如从 Azure 

    AD 的 My apps 单点到 FineReport 服务器),则需要先配置 FineReport 工程为 HTTPS 访问,配置 HTTPS 访问可参考:配置HTTPS

    若已配置平台为 HTTPS 访问,则此处直接填写 FineReport 工程的访问路径即可,例如:https://localhost:8080/webroot/decision 。

    若无此场景需求,可以填写任意 HTTPS 的链接。

    4)填写完必填项后,点击「保存」按钮。

    4.2 在FineReport中完善配置项

    FineReport 中配置项
    对应 Azure AD 信息

    IDP元数据

    6.png

    应用联合元数据 URL

    IDP唯一标识

    7.png

    Azure AD 标识

    IDP SSO地址

    8.png

    登录 URL

    IDP公钥

    9.png

    点击下载证书(Base64),下载后用记事本获取内

    SP唯一标识

    10.png

    同上述 4.1 节第一点,自定义的

    SP默认跳转地址

    填写 FineReport 工程的访问路径,url 到/decision 为止

    11.png

    /

    上传SP证书和SP私钥

    这边仅仅用作 SAML 报文的加密,上传任意一份可以用作加密功能的证书即可

    12.png

    /

    默认开启「跨越SAML认证的请求-平台登录页」

    如果不开启,则只能通过 SAML 登录, 且未开启 SAML 单点登出情况下,无法手动登出决策平台;如果开启跨越,则登出或直接访问原登录页 URL+/login 时会跳转到 FineReport 原本的登录页。

    注:配置测试单点时建议开启,配置完成后若无需使用原平台登录页,请关闭该配置,否则原平台登录入口将保留,地址为原 URL+/login,例如:http://localhost:8075/webroot/decision/login。

    13.png

    /

    4.3 效果查看

    访问原报表链接 https://localhost:8443/webroot/decision,会进行 SAML 单点登录。

    点击退出登录当前用户,会返回到 https://localhost:8443/webroot/decision/login。如下图所示:

    5. 示例-ADFS

    5.1 ADFS设置

    1)打开 ADFS, 选择「Start> Administrative Tools > ADFS Management」,跳转至「Relying Party Trusts」文件夹。

    2)选择「Action > Add Relying Party Trust」。

    3)选择「Start」来运行「Add Relying Party Trust Wizard」。

    4)打开「Select Data Source」窗口,选择 「Import data about the relying party from a file」, 选择从插件配置页上传的 metadata.xml 文件并点击「Next」。

    5)选择「Next」,跳过「Configure Multi-factor Authentication Now?」询问窗口。

    6)打开「Choose Issuance Authorization Rules」窗口, 选择 「Permit all users to access this replying party」 并点击 「Next」。

    7)在 「Ready to Add Trust」 窗口:

    点击「Encryption」, 从 FineBI 服务器上传「SP Certificate」(SP 公钥证书); 点击「Advanced」, 设置为「SHA-1」。

    8)打开「Ready to Add Trust」窗口, 点击「Next」。

    9)打开「Finish」 窗口, 点击「Open the Edit Claim Rules dialog for this replying party trust when the wizard closes」 并点击「Close」。

    如果在关闭向导时没有弹出「Edit Claim Rules」对话框, 右键选择用户设定的 The Relying Party Trust 名称,并选择「Edit Claim Rules...」。

    10)打开 「Edit Claim Rules」对话框, 选择「Add Rule」。

    11)打开「Select Rule Template」 对话框, 在「Choose Rule Type」下拉列选择「Send LDAP Attributes as Claims」并点击「Next」。

    12)填写「the Configure Rule」对话框:

    • 在「Claim rule name」栏输入「UseridentiferToNameID 」(可自定义)。

    • 在 「Attribute store」栏选择 「Active Directory」。

    • 在 「LDAP Attribute」栏选择「SAM-Account-Name」 (或账号的任意属性)。

    • 在「Outgoing Claim Type」栏输入「Name ID」。

    注:账号映射字段应设置为相同的值。在一些 ADFS 版本中,允许使用自定义值而不限定于名称 ID,此处的设定应为与插件设置中的账号映射相同。

    13)点击「Finish」。

    5.2 常见问题及解决方案

    注:V1.0.2 版本新增调试功能,无需调试时请保持按钮关闭。如遇问题可联系技术支持协助使用调试功能进行排查。

    ADFS 的正确 XML 响应将包含 Name 属性,正确格式如下:

    ...... 
    <AttributeStatement> 
    <Attribute Name="Name ID"> 
    <AttributeValue>username@fanruan.com</AttributeValue> 
    </Attribute> 
    </AttributeStatement> 
    ......

    5.2.1 在文件中找不到名称ID

    ./logs/fanruan.log
    ~ https-openssl-nio-443-exec-16 ERROR [standard] No name id found in Document.
    ~ com.onelogin.saml2.exception.ValidationError: No name id found in Document.

    可能的原因:

    1. 未配置「Outgoing Claim Mapping」。

    2. 在一些 ADFS 版本中, 「Outgoing Claim Mapping」必须包含「Name ID」。

    5.2.2 XML中未返回名称字段

    「Name」字段(属性名称)未出现在 ADFS 返回的 XML 中。

    ./logs/fanruan.log
    ~ http-nio-37799-exec-35 ERROR [standard] null
    ~ java.lang.NullPointerException: null

    可能的原因:

    1)SP SSL 证书未上传至 ADFS。

    2)ADFS 加密类型未设置为「SHA-1」。

    5.2.3 找不到匹配的账号

    ADFS 返回的 XML 中存在「Name」字段(属性名称),但登录应用程序无法识别。

    ./logs/fanruan.log
    ~http-nio-37799-exec-12 ERROR [standard] No matching user name found!

    可能的原因:

    SAML 插件中的「Username Mapping」与「Outgoing Claim Type」设定的值不同。

    5.2.4 账号不存在或密码错误

    ADFS 返回的 XML 中存在「Name」字段(属性名称),但登录不成功。

    ./logs/fanruan.log
    ~http-nio-37799-exec-23 WARN [standard]
    com.fr.decision.webservice.exception.login.UserLoginException : User not exist, or wrong password!

    可能的原因:

    ADFS 中设置为「Outgoing Claim Type」的字段不是 FineReport 中的「username」字段。

    5.2.5 登出认证服务器后决策平台未登出

    问题现象:用户登出了认证服务器,但决策平台未同步登出。

    解决方案:升级插件至 1.0.8 及以上的版本。

    附件列表


    主题: 部署集成
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持