9、系统组件

文章目录

文章目录

个人门户

个人门户,为用户提供集成办公环境

账户集成

门户统一管理平台各业务系统的账户数据

人事系统同步

  • 当人事系统发生员工入职或离职时,门户系统自动完成本系统对应账户的创建或回收
  • 当人事系统发生员工数据的更新时,门户系统自动完成本系统对应账户的员工数据更新

密码管理

  • 所有用户可使用修改密码功能完成密码修改
  • 所有用户可使用忘记密码功能完成密码重置
  • 管理员可直接修改任意用户密码

业务系统同步

  • 当账户信息或密码信息发生变化时,门户实时将变化后的数据同步至各业务系统,最终保证数据一致性
消息key 描述
fsl.portal.user 账户消息key
字段 描述
:— :—
sys_user表所有字段

钉钉集成

部门同步

  • 当人事系统发生部门的新增、修改、删除时,门户实时将变化后的数据同步至钉钉
  • 部门负责人属性字段也会同步至钉钉。钉钉只能将本部门的人员设置为部门负责人

员工同步

人员过滤
  • 只有指定 人员类别 字段的类型枚举值,才会将此员工同步至钉钉
类型 枚举值 是否同步
在职人员 合同工
在职人员 劳务工
在职人员 实习生
在职人员 外聘人员
在职人员 其它人员
在职人员 外包工
在职人员 外包工(短期)
在职人员 外包工(岗位)
在职人员 实习生(短期)
在职人员 实习生(学徒制)
在职人员 外部讲师
离职人员 全部
  • 使用数据字典功能,将不需要同步的枚举值配置到 MDM_DD_EMP_FILTER 项中即可
    在这里插入图片描述
正常流动
  • 当人事系统发生员工的入职、离职、调岗、修改时,门户实时将变化后的数据同步至钉钉
门户员工信息 门户工作信息 钉钉用户 钉钉操作
未(封存或离职) 未(封存或离职) 不存在 入职,为本组织添加钉钉用户
未(封存或离职) 未(封存或离职) 存在 调岗入,将钉钉用户添加至指定部门
未(封存或离职) (封存或离职) 任意 调岗出,将钉钉用户从指定部门删除。如删除后不属于任意一部门,则放置于根部门
(封存或离职) 任意 任意 离职,为本组织删除钉钉用户
不存在 任意 任意 离职,为本组织删除钉钉用户
自主退出
  • 当未离职员工主动在钉钉中退出所在组织时,门户系统会接收钉钉侧的事件回调通知,然后将员工重新纳入本组织指定部门。
  • 同一个钉钉组织,一个回调事件只能有一个回调url,反复注册将覆盖上一次注册的url,并且url必须是公网可访问,无安全验证。
  • 当功能首次发布到新组织后,需要手动调用注册接口,为本组织注册自主退出回调url.
组织名称 环境名称 注册地址
风神测试 DEV/SIT环境 https://dingtest.fslgz.com/portal//dd/register/user_leave_org
风神物流 UAT/PROD环境 https://app.fslgz.com/portal//dd/register/user_leave_org
  • 当因网络或系统异常导致钉钉回调失败的,钉钉会保存回调失败的通知数据,我们可以通过指定接口再次获取并处理数据。门户系统每次启动时,会自动检查并处理之前回调失败的数据,手工访问如下接口可立刻处理失败数据。
组织名称 环境名称 注册地址
风神测试 DEV/SIT环境 https://dingtest.fslgz.com/portal//dd/register/user_leave_org/handle_failed
风神物流 UAT/PROD环境 https://app.fslgz.com/portal//dd/register/user_leave_org/handle_failed

在这里插入图片描述

手机号不合法
  • 在数据字典中添加名为 部门文员(DEPT_CLERK) 的职能主担
  • 在职能主担中为各级部门设定各自的部门文员所对应的人员
  • 当人员数据中的手机号不合法时,系统查找其主岗部门对应的部门文员,发出手机号不合法的钉钉提醒
  • 如果本级部门未配置部门文员,则查找上级部门的部门文员,以此类推
  • 如果找到顶级部门后,仍然无法找到部门文员的,系统报错
更新手机号
  • 方案一:使用钉钉自带的变更手机号功能,完成手机号切换
  • 方案二:在HR系统,直接更新员工手机号
    • 如果更新后的手机号,手机号不合法,则走 手机号不合法 逻辑
    • 如果更新后的手机号,与其它人手机号重复,则类似于 手机号不合法 的逻辑,发出手机号重复的钉钉提醒
    • 系统删除原手机号对应的组织钉钉员工
    • 系统创建新手机号对应的组织钉钉员工

下面对死锁场景作特殊的说明。

  • A的真实手机号为1,B的真实手机号为2。
  • Hr数据录入时,将A与B的手机号对调录入了,即A录入了2,B录入了1
  • 系统已为A与B创建了错误的钉钉号。

恢复A与B正确钉钉号的流程如下

  • 在HR上将A的手机号更新为1
  • 在HR上将B的手机号更新为2。系统将删除B的错误钉钉号。
  • 人工登录钉钉后台,手工删除A的钉钉号。系统自动重建A的正确的钉钉号
  • 重新在HR上触发一次保存动作,系统将自动创建B的正确的钉钉号。
人员与部门关联
  • 当一个人只存在一条有效的工作信息时,直接将本部门作为本员工的所属部门,将员工信息推送至钉钉(主岗部门)
  • 当一个人存在多条有效的工作信息时
    • 按序查找选择“派驻”、“挂职锻炼”、“借调”、“支援”的非主岗,作为本员工的所属部门,将员工信息推送至钉钉
    • 如果以上都不存在,则将其主岗部门,作为本员工的所属部门,将员工信息推送至钉钉

单点服务

概述

CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。下图 是 CAS 最基本的协议过程:

在这里插入图片描述

SSO单点登录访问流程主要有以下步骤:

  • 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。
  • 定向认证:SSO客户端会重定向用户请求到SSO服务器。
  • 用户认证:用户身份认证。
  • 发放票据:SSO服务器会产生一个随机的Service Ticket。
  • 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。
  • 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

参考

慕课网SSO单

极客学院SSO

哔哩哔哩 SSO

CSDN SSO

服务端布署4.2.X

采用CAS官方模板,Idea导入本工程.

基本配置

  • pom.xml中的编译设置从1.7统一修改为1.8
  • etc\log4j2.xml复制到src\main\resources\log4j2.xml

多环境配置

  • 创建src\main\resources\profiles目录,并创建devsituatpro四个下级目录
  • etc\cas.properties复制到src\main\resources\profiles\dev目录下,并对属性作如下修改
locale.default=zh_CN
cas.logout.followServiceRedirects=true
  • 在pom.xml中添加如下内容
<build>
    <resources>
        <resource>
            <directory>src/main/resources/</directory>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources/profiles/${profile.env}</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <profile.env>dev</profile.env>
        </properties>
    </profile>
    <profile>
        <id>sit</id>
        <activation/>
        <properties>
            <profile.env>sit</profile.env>
        </properties>
    </profile>
    <profile>
        <id>uat</id>
        <activation/>
        <properties>
            <profile.env>uat</profile.env>
        </properties>
    </profile>
    <profile>
        <id>pro</id>
        <activation/>
        <properties>
            <profile.env>pro</profile.env>
        </properties>
    </profile>
</profiles>
  • 将原有src\main\webapp\WEB-INF\spring-configuration\propertyFileConfigurer.xml作如下修改
<util:properties id="casProperties" location="classpath:cas.properties" />

Http配置

target\war\work\org.jasig.cas\cas-server-webapp\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json复制到src\main\resources\services\HTTPSandIMAPS-10000001.json。修改serviceId属性,添加http。修改后属性如下

{
   
  "serviceId": "|(https|http|imaps)://.*"
}

target\cas\WEB-INF\view\jsp\default\ui\casLoginView.jsp复制到src\main\webapp\WEB-INF\view\jsp\default\ui\casLoginView.jsp,注释http警告

<!-- <c:if test="${not pageContext.request.secure}">
    <div id="msg" class="errors">
        <h2><spring:message code="screen.nonsecure.title" /></h2>
        <p><spring:message code="screen.nonsecure.message" /></p>
    </div>
</c:if> -->

用户配置

在pom.xml文件中,添加如下依赖,实现对MySql数据库访问

<dependency>
    <groupId>org.jasig.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.driver.version}</version>
</dependency>
……
<mysql.driver.version>5.1.46</mysql.driver.version>

target\war\work\org.jasig.cas\cas-server-webapp\WEB-INF\deployerConfigContext.xml文件复制到src\main\webapp\WEB-INF\deployerConfigContext.xml中,添加数据源定义

<alias name="dataSource" alias="queryDatabaseDataSource"/>
<bean id="dataSource" 
    class="com.mchange.v2.c3p0.ComboPooledDataSource" 
    p:driverClass="${database.driverClass}" 
    p:jdbcUrl="${database.url}" 
    p:user="${database.user}" 
    p:password="${database.password}" 
    p:initialPoolSize="${database.pool.initialPoolSize}" 
    p:minPoolSize="${database.pool.minSize}" 
    p:maxPoolSize="${database.pool.maxSize}" 
    p:maxIdleTimeExcessConnections="${database.pool.maxIdleTime}" 
    p:checkoutTimeout="${database.pool.maxWait}" 
    p:acquireIncrement="${database.pool.acquireIncrement}" 
    p:acquireRetryAttempts="${database.pool.acquireRetryAttempts}" 
    p:acquireRetryDelay<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值