一、系统默认方式
二、自定义相关实现
三、OAUTH2实现

一、SSO配置

先正常完成O2OA系统启动,使用xadmin登录系统,点击左上角系统菜单-系统设置,如下图:
1.png
在基础配置中点击“系统SSO配置”,点击“添加SSO配置”,如下图:
sso.png
注意:xadmin帐号不能用于单点登入

二、数据加密工具类(Java)

Crypto.java
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
/ encrypt and decrypt utils @author O2OA/public class Crypto {
private static final String utf8 = "UTF-8";
private final static String DES = "DES";
private final static String cipher_init = "DES";
public static String encrypt(String data, String key) throws Exception {
byte[] bt = encrypt(data.getBytes(), key.getBytes());
String str = Base64.encodeBase64URLSafeString(bt);
return URLEncoder.encode( str, utf8 );
}
public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
// 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom();
// 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key);
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance(cipher_init);
// 用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
return cipher.doFinal(data);
}
public static String decrypt(String data, String key) throws IOException, Exception {
if (StringUtils.isEmpty(data)) {
return null;
}
String str = URLDecoder.decode(data, utf8);
byte[] buf = Base64.decodeBase64(str);
byte[] bt = decrypt(buf, key.getBytes());
return new String(bt);
}
public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
// 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom();
// 从原始密钥数据创建DESKeySpec对象 DESKeySpec dks = new DESKeySpec(key);
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance(cipher_init);
// 用密钥初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
return cipher.doFinal(data);
}
}

三、O2OA相关修改(sso.html)

文件路径:o2server/servers/webServer/x_desktop/sso.html修改登录相关的代码

推荐文章:

企业微信办公首页说明
2021-02-19
O2OA平台可以以第自建应用的方式集成到企业微信,同步企业微信的企业通讯录作为本地组织人员架构,并且可以将待办等通知直接推送到企业微信进行消息提醒。
常见问题-IOS移动办公无法收到验证码
2021-02-07
iphone7withIOS10.2.1无法收到服务器绑定的验证码。一、错误描述错误!underlying(ErrorDomain=NSURLErrorDoma
流程设计-自定义提交功能
2021-03-01
当默认提交界面不能满足用户时候,可以使用本功能进行提交界面的定制。自定义提交功能基于表单和脚本实现。开发人员可以通过修改自定义界面的样式,添加或删除组件,设置提
日程安排
2021-02-19
O2OA日程安排模块为企业提供了各级员工均可以使用的日程管理和日程提醒能力,并且可以将日程发布为组织日程,让组织所有员工均可以看到并且收到提醒。也可以维护一个公
开发知识-平台中使用Druid数据库连接及监控
2021-02-07
一、o2oa数据库连接及使用原理o2oa使用阿里的druid与数据库进行连接及管控,在平台启动时druid管控了一个共享数据库连接池,默认的最大连接数是50(如
服务集成-与外部系统数据交互
2021-03-03
O2OA允许用户自行修改源码或者增加源码来扩展系统服务,也可以包装功能更强的业务服务。本文主要介绍如何在O2OA中开发接口与外部系统进行数据交互。
系统配置-自定义消息提醒
2021-02-25
O2OA平台设计了灵活的消息提醒数据交互方式,开发者可以根据自己的需要,来消费消息提醒数据,也可以将消息提醒数据接入到Kafka消息中间件来实现消息的准实时提醒
平台服务器版本升级操作说明
2021-02-25
O2OA信息化系统开发平台提供离线升级命令,用户可以下载最新的安装包到服务器进行服务器升级,系统升级时可以对旧程序进行备份,让升级操作更加可靠。
平台服务器主机架构配置推荐
2021-03-04
O2OA开发平台支持公有云,私有云和混合云部署,也支持复杂的网络结构下的分布式部署。本篇主要介绍O2OA支持的部署环境以及常用的集群部署架构。
流程设计-流程表单的创建与设计
2021-02-26
本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计,O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置,不需要过多的代码编写,业务人员可以

results matching ""

    No results matching ""