# E10统一认证接入第三方二开方案

来源快照：`result_data_new_260518.json`

- 来源 ID：`1215150293626773598`
- 模块：集成中心
- 目录：统一认证接入管理 - 无侵入开发方案
- space ID：`1158011075224911873`
- 原文链接：未提供
- 产品基线：未提供

## 正文

* * *

 

# 一、概述

本文档介绍E10通过ecode-gradle项目二开自定义接口登录e10系统的示例，

 

需要注意！此方案对E10环境的基线版本有要求，最低要求E10环境的基线版本为10.0.2503.01及以上

## 1.1 认证接入ecode二开方案说明

E10认证接入自定义认证类原二开方案由于需要将二开jar包打到E10标准认证服务的依赖上，侵入性较强，不符合二开开发规范，现在新增加认证接入ecocde前后端接口二开方案

此方案包含两部分开发

1）

前端二开ecode认证地址：

前端二开ecode的地址作用是，作为认证登录入口地址及后端ecode认证接口的中转页，比如要进行认证登录的时候，需要直接访问二开的前端ecode地址才能走认证登录的逻辑。认证中心如果需要绑定接入端系统的回调地址，也是需要绑定前端ecode接口地址，而非后端地址

2）

后端二开ecode认证地址:

    后端二开ecode的地址作用是，作为认证登录直接与第三方认证中心接口地址进行请求交互的作用，比如前端ecode认证地址从认证中心回调的授权码，传递给后端ecode认证接口地址，然后后端ecode认证使用授权码，直接请求第三方认证中心token接口获取token，并获取用户信息，最终完成认证登录。

 

## 1.2 认证接入ecode二开方案时序图

 ![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150469791506446&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

# 二、ecode本地开发环境搭建

E10，ecode后端自定义接口，本地二开项目的搭建，这里可以使用提供的认证登录二开项目模板文件作为二开的项目来进行开发，二开项目文件附件如下：

## 2.1 项目模板下载

首先是，下载上述提供的二开项目模板，解压到本地目录

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150469899517966&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 然后使用idea打开该模板项目

(需要注意的是，该模板项目，idea需要装有gradle插件，没有gradle插件，后面开发完成是无法将项目打包成jar包的，如果idea没有gradle插件，请自行在idea-设置-插件里进行提前安装)

 

## **2.2 项目结构设置**

项目打开后，对项目结构进行设置，如下图

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150469791506440&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150474188759072&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

设置JDK为java1.8

 

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150474188759077&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

设置源码路径和测试文件夹路径

  

## 2.3 项目依赖设置

引入E10环境jar包依赖:

 

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150474043490318&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

设置项目下的secDevLib文件夹为项目的jar来源库。然后去到二开服务的weaver-secondev-service/webapps/ROOT/WEB-INF/lib，将整个文件夹的jar包文件，打包导入secDevLib文件夹内

 

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150486903226371&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150482634465281&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

这样自定义认证登录的本地二开项目就算搭建完成了，等待项目初始化完成后，即可开始自定义认证登录接口。

# 三、E10自定义认证登录接口开发示例

 

上面搭建好E10自定义认证登录二开的本地开发环境，就可以开始开发自定义认证登录自定义接口了。

## 3.1创建包路径及单点类

首先，在项目src/main/java/下，新建对应的开发目录和自定义接口类，可根据附件中的demo来开发secondev-custom-demo.rar。

## **3.2自定义接口方法作用**

 

1、

认证登录方法AuthSso() ：

接收认证票据，执行认证授权逻辑，获取认证端用户信息；

默认路由:/papi/secondev/auth/sso/login (可根据自定义调整)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150482634465293&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

2、

认证配置属性项

    查看SecondAuthConfig该类，可参考示例自定义需要用到的配置项

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150482655797263&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

其中，登录账号规则的账号匹配规则为 :

1 登录名(默认)

3 人员ID

4 人员编号

5  电子邮箱

6 手机号码

 

3、

认证退出方法AuthSsoLogout()：

E10服务退出调用，可自定义认证登录后，退出逻辑；

默认路由:/papi/secondev/auth/sso/logout (可根据自定义调整)

 

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150478436327436&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

 

 

## 3.3自定义接口-接入第三方认证中心cas协议认证案例

 

## 3.4 制作jar包

 

最后，开发完成后，将开发项目打成jar包

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150478441783341&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

  

# 四、部署jar包

## 4.1  部署jar包

主团队管理员访问/ecode/monitor/loom/deploy/jar，服务节点选择二开服务weaver-secondev-service，检测服务状态

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150474043490307&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

点击上传，选择刚才本地build好的jar包

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150469938667532&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

1101基线及以上，且运维平台版本V5.0.9.920241128-RC及以上，增加二开jar包上传校验功能 可参考相关文档：[二开jar包上传校验功能文档](https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/doc/f37c9e49-e4d7-4db0-a671-a9cae8d1db70)

上传jar包后进入运维平台重启二开服务服务

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150474043490304&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

# 五、前端中转页二开

前端中转页通过ecode二开。您可以导入前端二开示例包，并在其基础上开发。

 

## 5.1前端二开示例包导入

1、进入E10  ecode，访问路径为oa域名 \+ /ecode/project

2、新建项目，输入名称（名称无要求。如果已经存在项目，可以忽略这一步）

3、导入二开包

![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150487115603971&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

4、发布二开包

使用**主租户** 账号，发布为公共应用![](https://weapp.eteams.cn/papi/file/preview?fileId=1215150478532435996&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

## 5.2 二开包开发说明

中转页二开包发布后，访问 E10域名 \+ /sp/custom/intbssso/freepass，即可看到loading效果。

 

1、

功能地址/sp/custom/intbssso/freepass

入参：

ticket：登录凭证

gopage：登录后跳转地址。如不传，跳转根目录

 

2、

接收url中的凭证或调用三方认证服务的sdk获取凭证

 

核心实现在ssoCore方法中。

 

// 需二开的方法，再次调用后端接口，传递登录凭证

const ssoCore = () => {

// todo ：1.获取登录凭证

// 如果凭证是从url获取，直接接收

  const { ticket } = urlParams;

  // 如果需要调用接口/sdk 等，请参照三方服务文档对接

 // 如果需要从三方认证中心获取ticket，则跳转至三方平台

  // todo

  // if (!ticket) {

  //   window.location.replace('/')

  // }

 

 

// todo ：2.调用后端二开接口，并传递登录凭证等参数

  // 把登录凭证传递给后端二开接口

  return new Promise(async(rs, rj) => {

    const data = await request({

      method: 'get',

      url: '/papi/secondev/auth/sso', // 替换为后端二开的接口

      data: {

        ticket

      }

    })

    rs(!!data.data) // 返回布尔值，根据二开接口调整

  })

}

 

 

[_Ecode_ _开发文档参考_](https://www.e-cology.com.cn/ecode/playground/doc/share/view/916733818655342593#e10%E5%AE%9A%E5%88%B6%E5%BC%80%E5%8F%91%E8%83%8C%E6%99%AF%E5%92%8C%E7%9B%AE%E6%A0%87)

 

前端二开包附件下载:

# 六、其他配置

组合环境

nacos添加配置：

weaver.cas.base.custom.config= JSON字符串

配置添加完成后重启base服务

 

单体环境

服务器上修改weaver-common-cas-core配置文件(e10-server0/E10/webapps/ROOT/WEB-INF/classes/weaver/config/config-center/weaver-common-cas-core.properties)，添加weaver.cas.base.custom.config= JSON字符串

修改完成后重启服务

 

配置：

 

1、

## 统一认证配置参数（250601基线后支持）

全资源拦截配置，配置后，访问oa任何页面，都会拦截到你的ecode二开页面。

 

weaver.cas.base.custom.config = {"intunifyAuthConfig":

 [

{

  "disable":"false",//禁用全拦截

  "device":"pc", //规则适用端

  "ua":"", //规则适用ua标识

  "url":"/sp/custom/intcssso/freepass" // 拦截到ecode开发的自定义页面

},

{

  "disable":"false",//禁用全拦截

  "device":"mobile", //规则适用端

  "ua":"", //规则适用ua标识

  "url":"/mobile/custom/intcssso/freepass" // 拦截到ecode开发的自定义页面

}

]

}

 

2、

## 统一认证退出登录指定登出地址（250601基线后支持）

用于oa退出后，注销三方认证服务

 

weaver.cas.base.custom.config = {"weappLogoutRedirectConfig":

 [{

  "url":"/customlogin/test01",  //三方认证服务注销会话地址

  "type":"intunifyauth",//统一认证类型

  "condition":"",//js语句

  "device":""

 

 }]

}

 

 

3、

## 统一认证登录方式，登录E10后重定向地址（241101基线后支持）

weaver.cas.base.custom.config = {"weappRedirectTenantConfig":

 [{

  "tenantKey":"",//租户key

  "url":"/customlogin/test01",

  "type":"intunifyauth",//统一认证类型

  "device":""

  

 }]

}

 

## 4、统一认证跳转链接中oaAddress参数是否拼接search参数

weaver.cas.base.custom.config={"intunifyOaAddressParamsDisable":"true"}
