`

开源协同OA办公平台教程:O2OA服务管理中,接口的调用权限

阅读更多

 本文介绍O2OA服务管理中,接口的权限设定和调用方式。

 

适用版本:5.4及以上版本

 

创建接口

 

具有服务管理设计权限的用户(具有ServiceManager角色或Manager角色)打开“服务管理平台”,进入接口配置视图,点击左上角的新建按钮,可创建一个新的接口。

 

 

新建接口后,在右侧属性栏中有两个配置和调用权限有关,一个是“允许访问的地址表达式”,一个收是“启用鉴权”。

 

 

允许访问的地址表达式

 

此处允许输入一个正则表达式,用来匹配调用接口的客户端的Remote_Addr,只有匹配通过,接口才允许执行。例如只允许172.16.1.50到172.16.1.56地址调用接口,可以在此处输入:

 

172\.16\.1\.5[0-6]

 

启用鉴权

 

此处选择“是”的话,就需要在调用接口时传入client名称和一个加密后的token。所以我们先需要一组鉴权配置。

 

具有管理员权限的用户(具有Manager角色),打开“系统设置”-“系统SSO配置”,找到“鉴权配置”。

 

 

点击“添加鉴权配置”:

 

 

此处需要配置一个名称和密钥。

 

名称:可随意填写,就是我们在调用接口或进行SSO时要传入的client参数。

 

密钥:可随意填写,用于后续加密,最少8位。

 

 

 

此处我们假设名称填写:oa;密钥填写:platform

 

填写完成后确定。

 

 

然后我们就可以使用此鉴权配置来调用接口了。

 

接口调用

 

接口调用的的地址在接口属性栏中有显示:

 

 

当启用鉴权后的接口调用地址为:

 

http://develop.o2oa.net:20030/x_program_center/jaxrs/invoke/{name}/client/{client}/token/{token}/execute

 

请求方法为:POST

 

 

 

地址中的{name}为接口的名称或别名;

 

地址中的{client}为鉴权的名称;

 

地址中的{token}为:用户名#1970年毫秒数 使用鉴权密钥经过3DES加密后的值。

 

 

 

javascript加密代码样例

 

我们使用CryptoJS进行DES加密。(GitHub: https://github.com/brix/crypto-js

 

function crypDES (value, key) {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var xtoken = CryptoJS.DES.encrypt(value, keyHex, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    var str = xtoken.ciphertext.toString(CryptoJS.enc.Base64);
    str = str.replace(/=/g, "");
    str = str.replace(/\+/g, "-");
    str = str.replace(/\//g, "_");
    return str;
},

 

IOS加密代码样例

 

/// o2oa DES加密 @param publicKey 加密公钥
func o2DESEncode(code: String, publicKey: String) -> String? {
    if let encode = desEncrypt(code: code, key: publicKey, iv: "12345678", options: (kCCOptionECBMode + kCCOptionPKCS7Padding)) {
        let first = encode.replacingOccurrences(of: "+", with: "-")
        let second = first.replacingOccurrences(of: "/", with: "_")
        let token = second.replacingOccurrences(of: "=", with: "")
        return token
    }else {
        print("加密错误")
        return nil
    }
}
/// DES 加密
func desEncrypt(code: String, key:String, iv:String, options:Int = kCCOptionPKCS7Padding) -> String? {
    if let keyData = key.data(using: String.Encoding.utf8),
        let data = code.data(using: String.Encoding.utf8),
        let cryptData    = NSMutableData(length: Int((data.count)) + kCCBlockSizeDES) {

        let keyLength              = size_t(kCCKeySizeDES)
        let operation: CCOperation = UInt32(kCCEncrypt)
        let algoritm:  CCAlgorithm = UInt32(kCCAlgorithmDES)
        let options:   CCOptions   = UInt32(options)

        var numBytesEncrypted :size_t = 0

        let cryptStatus = CCCrypt(operation,
                                  algoritm,
                                  options,
                                  (keyData as NSData).bytes, keyLength,
                                  iv,
                                  (data as NSData).bytes, data.count,
                                  cryptData.mutableBytes, cryptData.length,
                                  &numBytesEncrypted)

        if UInt32(cryptStatus) == UInt32(kCCSuccess) {
            cryptData.length = Int(numBytesEncrypted)
            let base64cryptString = cryptData.base64EncodedString()
            return base64cryptString
        }
        else {
            return nil
        }
    }
    return nil
}

 

 

 

Android加密代码样例

 

fun o2DESEncode(code: String, publicKey: String): String {
    val sutil = CryptDES.getInstance(publicKey)
    var encode = ""
    try {
        encode = sutil.encryptBase64(code)
        Log.d(LOG_TAG,"加密后code:$encode")
        encode = encode.replace("+", "-")
        encode = encode.replace("/", "_")
        encode = encode.replace("=", "")
        Log.d(LOG_TAG,"替换特殊字符后的code:$encode")
    }catch (e: Exception) {
        Log.e(LOG_TAG,"加密失败", e)
    }
    return encode
}

public class CryptDES {
    private Cipher encryptCipher = null;
    private Cipher decryptCipher = null;
    private static CryptDES des = null;
    public static CryptDES getInstance(String des_key) {
        try {
            DESKeySpec key = new DESKeySpec(des_key.getBytes());
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
            des = new CryptDES(keyFactory.generateSecret(key));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return des;
    }
    private CryptDES(SecretKey key) throws Exception {
        encryptCipher = Cipher.getInstance("DES");
        decryptCipher = Cipher.getInstance("DES");
        encryptCipher.init(Cipher.ENCRYPT_MODE, key);
        decryptCipher.init(Cipher.DECRYPT_MODE, key);
    }    
    public String encryptBase64 (String unencryptedString) throws Exception {
        // Encode the string into bytes using utf-8
        byte[] unencryptedByteArray = unencryptedString.getBytes("UTF8");
        // Encrypt
        byte[] encryptedBytes = encryptCipher.doFinal(unencryptedByteArray);
        // Encode bytes to base64 to get a string
        byte [] encodedBytes = Base64.encode(encryptedBytes, Base64.DEFAULT);
        return new String(encodedBytes);
    }
    public String decryptBase64 (String encryptedString) throws Exception {
        // Encode bytes to base64 to get a string
        byte [] decodedBytes = Base64.encode(encryptedString.getBytes(), Base64.DEFAULT);
        // Decrypt
        byte[] unencryptedByteArray = decryptCipher.doFinal(decodedBytes);
        // Decode using utf-8
        return new String(unencryptedByteArray, "UTF8");
    }  
}

 

 

0
0
分享到:
评论

相关推荐

    PHPOA协同OA办公软件开源版源码 PHPOACollaborationOA.rar

    1、PHPOA办公系统是适用于中小型企业的通用型协同OA管理软件,融合了PHPOA长期从事管理软件开发的丰富经验与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制。 2、PHPOA使用敏捷...

    PHPOA开源协同OA办公系统 v4.0

    PHPOA办公系统是适用于中小型企业的通用型协同OA管理软件,融合了PHPOA长期从事管理软件开发的丰富经验与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制PHPOA使用敏捷MVC开发框架...

    SpringBoot JAVA 开源OA协同办公系统

    本项目权限管理可控制页面、接口、数据操作。 目前系统已全面支持国产达梦数据库8.0,人大金仓V8R3,神州通用v7,要需者可加群索取。 安装最新版测试请加群索取或WX联系! 正式版演示地址:http://oa.cyunsoft.com ...

    开源OA系统 - 码云GVP-Java开源oa-企业OA办公平台-企业OA-协同办公OA-流程平台OA-O2OA-O

    O2OA企业应用开发平台是兰德纵横网络技术股份有限公司发布和维护的开源产品,是使用JavaEE技术栈,分布式架构设计的一款真正全代码开源的企业应用定制化开发平台。适用于企业OA、协同办公类信息化系统的建设和开发。...

    协同OA办公全功能php源码可二开

    协同协同OA办公全功能php源码可二开,适用于中小型企业的通用型协同OA管理软件,采用全球认可的最为先进的开放理念——OOP(面向对象),进行全新框架设计。框架结构更为清晰, 代码更易于维护。模块化做为功能的...

    PHPOA开源协同OA办公系统

    PHPOA办公系统是适用于中小型企业的通用型协同OA管理软件,融合了PHPOA长期从事管理软件开发的丰富经验与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制PHPOA使用敏捷MVC开发框架...

    开源OA系统 - 码云GVP-Java开源oa-企业OA办公平台-企业OA-协同办公OA-流程平台OA-O2OA-OA,支持国产麒麟操作系统和国产数据库(达梦、人大金仓),政务OA,军工信息化OA

    开源OA系统 - 码云GVP|Java开源oa|企业OA办公平台|企业OA|协同办公OA|流程平台OA|O2OA|OA,支持国产麒麟操作系统和国产数据库(达梦、人大金仓),政务OA,军工信息化OA

    基于PHP Laravel的开源OA/协同办公平台,包含销售管理、日程安排,进销存、数据分析,强大的自定义能力

    Gdoo是基于PHP Laravel的开源OA/协同办公平台,包含销售管理、日程安排,进销存、数据分析,强大的自定义能力。改进销售管理模式,提升企业执行效率。进销存功能、营销管理功能、简单生产计划、业务员销售团队分级...

    基于RuoYi-VUE版本开发开源OA协同办公系统源码 集成Flowable流程引擎 可自由选择提交的流程.zip

    总的来说,基于RuoYi-VUE和Flowable的开源OA协同办公系统,不仅为企业提供了强大的流程管理工具,也为开发者提供了宝贵的实践平台,让他们能够深入理解前后端分离架构、工作流引擎的应用以及企业级系统的设计与实现...

    基于PHP开发的OA/协同办公平台源码.zip

    一个基于PHP开发、Yii框架、免费开源的,快速、高效的协同办公管理系统 ,从2012年研发以来,是为了简化企业协同应用开发而诞生的。IBOS从诞生以来一直秉承简洁实用的设计原则,在保持出色的功能和的优秀的用户体验...

    基于ThinkPHP开发的PHP开源OA办公系统

    OA办公系统是企业日常运营中的核心部分,它涵盖了工作流管理、文档管理、任务分配、项目协作、人力资源管理等多个方面,旨在提升企业内部沟通和协同工作的效率。开源OA系统允许企业根据自身需求进行定制化开发,同时...

    苦菊OA协同OA办公系统V2019(价值10万元的OA源码)

    苦菊OA办公系统是适用于中小型企业的通用型协同OA管理软件,融合了苦菊OA长期从事管理软件开发的丰富经验与先进技术,该系统采用领先的B/S(浏览器/服务器)操作方式,使得网络办公不受地域限制。 苦菊OA使用敏捷MVC...

    activiti入门教程-基于Activiti5工作流实战企业协同OA办公系统.pdf

    标题中提到的“Activiti入门教程-基于Activiti5工作流实战企业协同OA办公系统.pdf”意味着本教程是针对Activiti 5版本,专门介绍如何使用Activiti框架来构建一个实战的企业协同办公系统(OA)。Activiti 5版本是该...

    php开源oa办公系统

    本文将深入探讨PHP开源OA办公系统的核心概念、功能特性以及在学校环境中的应用。 一、PHP开源OA办公系统的概述 PHP是一种广泛使用的服务器端脚本语言,尤其在Web开发领域有着极高的应用。开源OA办公系统选择PHP...

    OA办公系统源码下载_PHPOA源码.zip

    【OA办公系统源码下载_PHPOA源码.zip】是一个包含信呼协同办公OA系统源码的压缩包,它提供了一种开源的解决方案,适用于企业的信息化管理。在深入理解这个系统之前,我们先来了解一下OA(Office Automation)办公...

    o2oa用户操作手册-环境部署及搭建应用.zip

    4. **接口集成**:O2OA提供API接口,可以与其他系统进行数据交互和功能集成。 5. **报表分析**:利用O2OA的数据分析功能,生成各类报表,辅助决策。 在文档中,"2332036.doc"可能是关于具体步骤的详细说明,包括...

    协同OA办公自动化系统源码开源版

    在该开源版的协同OA办公自动化系统中,我们可以看到一些关键的页面文件,这些文件构成了系统的用户界面和核心功能: 1. **Left.aspx**:左侧导航栏页面,通常展示系统的各个功能模块,用户可以通过点击快速访问不同...

    PHP开源OA办公系统

    PHP开源OA办公系统是一种基于PHP编程语言开发的开放式办公自动化解决方案,专为中小型企业设计,旨在提高工作效率,优化工作流程,实现信息化管理。这个系统以其易用性、稳定性和灵活性著称,允许用户根据自己的需求...

    天生创想OA办公系统V2019开源版含CRM、项目管理、移动H5

    天生创想OA办公系统是一款基于PHP开发的开源企业级协同办公解决方案,V2019开源版更是集成了CRM(客户关系管理)、项目管理和移动H5功能,为企业提供了全面、灵活且高效的信息化管理工具。 首先,让我们深入了解OA...

    PHP信呼协同办公OA系统 v2.5.0

    信呼协同办公OA系统是开源的一款办公系统,跨平台的系统,支持APP,pc网页版,pc客户端等。 信呼协同办公OA系统特点: 1、让每个企业单位都有自己的工作系统。 2、移动,免费开源工作系统,数据全部自己管理。 3、...

Global site tag (gtag.js) - Google Analytics