OAuth单点登录

编辑
  • 文档创建者:susie
  • 浏览次数:3870次
  • 编辑次数:15次
  • 最近更新:susie 于 2019-10-10
  • 1. 描述

    OAuth协议为用户资源的授权提供了一个安全、开放而又简易的标准,OAuth的授权不会使第三方触及到用户的账号信息,因此较安全。此篇文档将介绍FineBI系统如何实现oauth单点登录。


    2. 实现原理


    通过过滤器拦截请求,期间通过oauth的认证过程,拿到user,实现FineReport的单点登录。


    3. 操作步骤


    3.1 引入第三方jar


    1)编译class引入的jar:

    首先编译器中需要导入FineReport的jar包,详细方法点击Eclipse中启动设计器

    接着需要导入外部jar,commons-httpclient-3.1.0.jarezmorph-1.0.6.jarjavax.servlet-api-3.1.0.jar、 json-lib-2.4-jdk15.jarmorph-1.1.1.jarorg.apache.oltu.oauth2.client-1.0.1.jar

    2)运行工程时引入的jar:

    引入方法,将上述jar放置到%FR_HOME%/webapps/webroot/WEB-INF/lib文件夹下,如下图:

    注:若为BI的工程则不需要commons-httpclient-3.1.0.jar
    222


    3.2 新建web.xml

    由于10.0工程里没有web.xml了,所以直接新建web.xml,放到在%FR_HOME%/webapps/webroot/WEB-INF下,若已有web.xml,则加入下面的内容:
    222

    完整web.xml内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 
       xmlns="http://java.sun.com/xml/ns/j2ee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
       version="2.4"> 
    
      <display-name>Template WebApp</display-name>
      
        <mime-mapping>
      <extension>msi</extension>
      <mime-type>application/x-msi</mime-type>
      </mime-mapping>
    
     <filter>    
        <filter-name>FrFilter</filter-name>    
        <filter-class>com.fr.FrLoginFilter</filter-class>    
    </filter>    
    <filter-mapping>    
        <filter-name>FrFilter</filter-name>    
        <url-pattern>/decision</url-pattern>    
    </filter-mapping>  
    	
     <filter>    
        <filter-name>filter</filter-name>
        <filter-class>com.fr.myfilter</filter-class>
    </filter>    
    <filter-mapping>    
        <filter-name>filter</filter-name>
        <url-pattern>/decision</url-pattern>    
    </filter-mapping>  
    
    </web-app>


    3.3 编译class文件

    1)FrLoginFilter.java

    2)HttpUtil.java

    3)myexporter.java

    4)SSLConnectionClient.java

    5)myfilter.java,修改其中的tokenLocation和redirectURI为自身的地址。

    编译器中编译生成 class文件,将其放入%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr 目录下,若没有,则在对应目录下新建文件夹即可。

    222


    3.4 查看效果


    重启报表工程,访问地址:

    https://www.example.com/oauth/authorize?response_type=code&scope=read&client_id=dzs.hotelbi.local&redirect_uri=http://localhost:8075/webroot/decision&scope=1&state=9441904a455e4123b3fd3ef51f1e262e

    进行登录,其中上述地址可根据自身在第三步骤输入的tokenLocation和redirectURI进行修改访问。

    传递参数的含义:

    Parameter 
    Name  
    Type    Description
      client_id    string  必须参数,在 OAuth 注册应用时获得的 API 
    Key。
      response_type  string  必须参数,此值固定为“code”。
      redirect_uri  string必须参数,授权后要回调的 UR I,当前系统通过
    此地址来获取 Code。  
      scope   string  非必须参数,以空格分隔的权限列表,若不传递
    此参数,代表请求用户的默认权限


    附件列表


    主题: 部署集成
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]