电子表格FineReport教程:[1]用户身份验证

2025-11-02 15:00:49

1、问题描述

在实际的应用中,用户在使用我们的数据决策系统时,越来越多的倾向于使用LDAP来进行多系统的用户统一认证,FineReport在7.0.4的版本中也增加了这一用户认证功能,LDAP认证,用户登录的时候,平台拿用户名密码到设置的LDAP系统进行认证,若认证失败,则平台判断认证失败;若LDAP系统认证成功,但是对应的用户不存在于fs平台的用户中,则平台判断认证失败;若LDAP系统认证成功,且对应的用户存在于fs平台的用户中,则平台判断认证成功,可进入fs平台、按照该用户在平台中的权限进行相应操作。

点击用户管理>设置标签,可以选择身份验证方式,如下图:

电子表格FineReport教程:[1]用户身份验证

2、LDAP认证

选中LDAP认证标签,如下图配置:

点击保存按钮,退出op=fs平台,需重新登录。

注:登录的时候,需要在用户名后面添加域名,比如说name@finereport.com,如果不保存配置过程,退出直接点击取消按钮即可。

至此,LDAP认证即配置完成了。

电子表格FineReport教程:[1]用户身份验证

3、添加用户

在问题描述中讲述了,如果LDAP认证成功,但是平台中没有存储该用户,那么平台同样认证失败,那么配置好LDAP之后,还需要给数据决策系统添加用户,具体的添加方式有两种:

直接添加,同步数据集添加。

注:LDAP认证配置用户时,不需要密码一项,因此在手动添加用户或者同步数据集导入用户时,都没有密码一项。

1、对于ERP、OA、CRM、.NET等软件或项目中,其本身是有一个统一的认证体系,报表只作为一个模块集成到这些系统中。用户的权限信息是保存在自己的服务器上,且不适合直接开放给finereport服务器,即不需再报表服务端进行认证,用户登陆系统平台后访问报表模块,是直接在其统一的认证体系中认证,而最终返回用户的角色信息至报表服务端,从而控制报表的访问权限,此时就可以使用HTTP认证服务配置。以下讲解此认证配置。

2、实现原理

将用户名fr_username和密码fr_password传递给了报表服务,报表服务将带着这两个参数访问认证地址(为了保证安全性,使用post方式)。如果返回的结果是false,即身份认证失败,此时将会返回登陆界面,否则以返回的结果作为该用户的角色保存在session中(多个角色以逗号隔开)。

3、实现步骤

 编写验证页面

验证页面机制

在进行登陆时,会将用户名fr_username和密码fr_password传递给报表服务,报表服务将带着这两个参数访问认证地址。如果返回的结果是false,则身份认证失败并提示用户名或密码错误,否则以返回的结果作为该用户的角色保存在session中。

4、示例

如下我们用代码实现验证用户名密码是否相等,若相同则将返回的用户名识别为角色并复制给fr_authority保存在session中,若不相同则认证失败,具体的代码如下:

<%

String username = request.getParameter("fr_username");

String password = request.getParameter("fr_password");

if (username.equals(password) ) { 

     response.getWriter().write(username); 

} else {

      response.getWriter().write("false");

  }

%>

将此页面保存到tomcat某个应用下,并命名为auth.jsp。

注:fr_username、fr_password、fr_authority是我们报表默认的参数,所以调用时大小写必须保持一致。

另:如上方法只是验证用户名和密码是否相等并将用户名为角色返回,您也可以自己设置认证方法。

5、 HTTP认证配置设置

点击管理系统>用户管理,点击设置选项,认证方式选择Http认证,认证地址选择刚刚创建的认证页面,如下图:

注:Http认证选项也不需要密码一项,因此在手动添加用户或者同步数据集导入用户时,都没有密码一项。

电子表格FineReport教程:[1]用户身份验证

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢