zoukankan      html  css  js  c++  java
  • 第三方系统打开EAFC的实现

    前言:EAFC是我们公司的一个框架,一个项目上,客户的OA系统要调用我们推送过去的代办任务,希望能打开我们的代办处理界面,我们的代办处理界面是winform的。引出给出了以下的一个方案。在此备存。

    --------------------------------------------------------

    第三方系统打开EAFC的实现

    借助ClickOnce来实现第三方系统打开本地eafc客户端,而无论第三方系统是网页版还是桌面版(比如在oa中点击待办事项,打开审批界面)。

    一. 参数

    打开eafc,要支持客户端参数。可以通过ClickOnce传递参数给客户端,以便客户端根据传入的参数做相应的动作。

    1,外部系统 sysid。需要给每个要打开eafc的外部系统分配唯一的编号,用于识别可信任系统。使用该系统id,可以实现凭证的解密,用户的映射等等。

    2,认证信息 credential。通过认证信息,客户端来确定请求用户的合法性。credential 的实现有多种,可以是 账号+密码+随机码(加密后),也可以是系统根据某种方式生成的token。

    3,认证方式 auth_mode

    可以是 1:账号密码明文方式;2,账号密码密文方式;3:内部通行证方式。默认 1。

    4,应用 app

    要打开的应用的编号。无默认值

    5,要打开的功能编号 func

    登录后,自动打开的功能,只能一个。

    6,功能参数 func_param

    7,其他参数:

    (1)tm 树形菜单 0:隐藏,1打开,默认打开

    (2)dm下拉菜单 0:隐藏,1打开,默认打开

    (3)title:窗口标题,默认系统原标题

    (4)sm:自启动模块,0:禁止,1:启用,默认启用

    (5)size:窗口大小,w,h或者 max最大化,默认最大化。

     

    二,接口功能与用户认证

    1. 取任务列表

    条码系统通过提供webservice,供外部系统(比如茂名OA系统)调用以获得某个用户的待办任务列表。

    参数:系统id,用户凭据credential,时间范围。。。

    根据系统id,来判断采用哪种用户验证方式(系统可以配置对每个外部系统的验证方法,验证链),验证通过后,转换为本地系统用户。

    其中,用户凭据可以是账号密码,可以是明文或者加密,比如使用des或者rsa加密,推荐使用rsa非对称加密。如果使用des的话,最好不同外部系统使用不同的加密密钥。根据 “账号 +  密码 + 随机码”形成字符串,进行加密形成。加随机码的目的是:使即便是同一个人,每次形成的credential也不同,避免重放攻击。在登录时,将credential发送给服务端,解析出账号和密码进行验证。

     

    2. 打开待办任务

    通过客户端打开待办任务时,必须以某个账号登录到系统。因为登录信息通过ClickOnce参数传递,要考虑安全性,比如密码不要使用明文,还要避免重放攻击。

    在形成代办事项列表时,将credential形成在待办任务的处理url中。代办列表的格式:

    http:/[ip]/eafc.appliction?credential=<验证串>&auth_mode=2&func=<功能号>&......

    credential 的形成有两种(参见一、参数 1.认证方式),如下:

    (1)第1种方式,用户账号+密码方式

    credential。加密方式和验证方式参见第一部分的说明。

    (2)第2种方式

    其中credential由系统随机生成,并存放在表中,表的格式:

    凭据表名:ams_sys_credential

    (1)credential     char(100)   -- 可以是guid,只要是随机的不重复,且很难猜出来就行。

    (2)user_id         number     -- 对应的本系统用户

    (3)create_time   datetime   -- 创建时间

    (4)exp_time      datetime    -- 过期时间 过期后,该凭据无效。系统会自动删除过期的凭证。

    打开待办任务时,eafc从参数中取得credential串,发送给服务器进行验证,验证程序在凭据表ams_sys_credential中查找该credential,如果存在且没有过期,验证通过,返回该credential对应的本地用户。否则验证失败。

     

    三、外部系统的管理

    外部系统打开eafc时,需要传递外部系统id。外部系统id由eafc统一分配和管理。对不同的外部系统,eafc可以使用不同的用户凭证验证方式;凭据加解密,用户映射。

    1,凭证验证方式。不同的外部系统可能支持不同的用户验证方式,比如茂名oa可能是ad域用户验证,其他系统也可能是本系统自己验证(提供验证服务)。或者是多种验证方式的组合(验证链)。eafc可以根据不同的系统,配置不同的验证方式。

    2,凭据加解密。根据不同的外部系统,配置不同的加解密方式,以及存放加解密密钥。

    3,用户映射。有时候外部系统传入的用户账号是外部系统本地用户而不是eafc的用户信息。在通过外部系统账号登录时,验证通过后,需要转换成eafc本地系统用户。

    除了外部系统需要登录eafc外,相对应的,eafc也可能需要登录外部系统,比如茂名的投资计划管理系统。也需要以上的3点信息。

    外部系统管理的相关表:

    1,外部系统注册表 ams_sys_trust_system

    (1)系统id varchar(20)

    (2)系统描述

    (3)系统登录页面

    2,外部系统详细信息表 ams_sys_trust_system_dtl

    (4)对外部系统的加密方法 --提供给外部系的加解密方法 des或者rsa

    (5)外部系统提供的加密方法 --满足外部系统要求的加解密方法,des或者rsa

    (6)对外部系统的加密参数

    (7)外部系统提供的加密参数

    (8)对外部系统提供的加解密provider ;用来解密外部系统传过来的加密的凭据

    (9)外部系统的加解密provider;用来将明文加密靠后传送给外部系统

    (10)验证链 --外部系统登录本系统时的验证链

    2,用户映射关系 ams_sys_user_mapping

    (1)系统id

    (2)内部用户id

    (4)外部系统用户账号

    (5)外部系统用户密码

    (6)其他辅助列。

  • 相关阅读:
    数组常用遍历方法总结
    文本控制行数,超出省略号显示
    数据结构入门
    数论函数补充 公式推导
    几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi
    COCI 2018/2019 CONTEST #2 T4 Maja T5Sunčanje Solution
    数论函数
    数论入门
    USACO1.4 1.5 搜索剪枝与数字 洛谷OJ P1214 P1215 P1217 P1218
    USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)
  • 原文地址:https://www.cnblogs.com/senline/p/4273198.html
Copyright © 2011-2022 走看看