开源OA:手把手教你搭建OA办公系统(17)实现系统间单点登陆认证

O2OA是一款全开源的企业信息化开发平台,作为OA系统开发平台,O2OA着力于帮助企业降低信息化系统开发成本,帮助企业提升信息化能力。本系列主要以实战形式向大家介绍使用开源OA平台搭建一套协同办公系统的实际操作过程,让大家更好地了解O2OA平台的基本能力。

本文主要介绍一下O2OA这个OA办公系统下,如何实现单点登录。

教程准备

这节课我们有两部分要介绍:

1.单点登陆的两种实现方式。
2.介绍微信单点的登录过程。

单点登陆概念

介绍一下单点登录(Single Sign On),它简称为 SSO,意指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

单点登陆方式

O2OA办公系统默认提供两种单点登陆解决方案:

加密认证

我们来看下这张图,加密认证方案是第三方系统通过生成加密的临时票据,然后使用这个临时票据进行单点认证。

接下来我们演示一下第三方系统单点登录到O2平台的过程,以HR系统为例:

首先在O2平台里进入到系统设置,找到系统SSO配置

配置鉴权 ,配置第三方系统的鉴权

输入鉴权名称,输入密码

配置鉴权好了,HR系统怎么登录呢?

o2平台中心服务,提供了一个认证的接口,我们去打开看一下,

这个认证接口在 组织管理认证服务里面:SSO Action,http://127.0.0.1:20030/x_program_center/jest/list.html

有一个方法:getLogin

我们看到需要两个参数:client和token,token就是临时票据。

这个临时票据HR系统怎么产生?是需要HR系统写加密算法实现的。加密算法是基于3DES来实现的,密钥的依据是用户名+#+时间戳

现在平台里提供了加密的接口,来生成这串临时票据。

SsoAction / getEncrypt

输入clientid, key,和用户的凭证信息,

用户的信息是我们组织库里的用户,填手机号吗和唯一编码都可以。

拷贝这串密钥信息

O2平台会用3Des进行解密获得用户信息,现在HR系统拿着 和O2平台约定好的token信息, 去执行getLogin  进行单点登录。

输入client 和临时票据(密钥)

直接访问服务器

通过服务来调用接口实现单点登录,在官网上有详细的说明文档。

登录 · 语雀

这里我们再提一下,O2默认采用的是3DES的加密算法,其他的加密算法和认证过程,可以通过二次开发来实现,二次开发会在后续课程中讲到。

接下来,我们讲单点登录的另一种方法:OAuth2

OAuth2

OAuth是一个关于授权(authorization)的开放标准,目前的版本是2.0版。

比如网站,手机使用的"使用微信账号登陆","使用微博账号登陆"采用的都是OAuth2实现的.

好,我们通过调用由微信提供的oauth服务,实现和O2OA系统的单点登陆.

总体的过程是这样的:

1.o2oa平台提供一个微信登录的链接,用户点击跳转到微信的服务器

2.用户根据微信授权,提示登录,微信并确认授权给o2平台

认证的步骤:

1.微信授权服务器返回用户的浏览器一个授权码,这个是请求code的过程.

2.微信返回授权码(code)给o2平台

3.o2平台凭借授权码和之前由微信提供给我们的客户号(AppID) 和 客户密钥(AppSecrect) 向微信服务器请求令牌,获取access_token

4.通过access_token去微信资源服务器读取用户信息(这一步在微信登陆过程中可以忽略).

申请账号

前提条件:首先在微信开放平台需要,注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,才可开始接入流程。

接下来,

我们以培训的这台服务器为例,进行配置。

这里我们使用live服务器申请到了两个凭证:

AppID: wx7c7c2320775****

AppSecret: 996de80562e8ead0907707a93d9a1e***

这个账号是和域名(live.o2oa.net)是绑定的.无法冒用其他人的appId

配置

回到平台的主菜单

点击左上角主菜单 -> 系统配置 -> 系统sso配置 -> OAUTH服务端配置 -> 添加oauth配置.

这里要说明一下:微信单点登陆和企业微信配置不是一个项目.

是否启用

yes

名称

微信

displayName

微信

图标

我们可以到微信的官网选择一个适合的图标

微信Logo | 微信开放文档

https://open.weixin.qq.com/zh_CN/htmledition/res/assets/res-design-download/icon48_appwx_logo.png

客户号

对应微信申请下来的appId

appid :o2平台在微信上注册的开发者账号

wx7c7c2320775b40c2

客户密钥

对应微信申请下来的AppSecret

996de80562e8ead0907707a93d9a1ef2

请求密钥网址

https://open.weixin.qq.com/connect/qrconnect

请求密钥方法参数

redirect_urI:回调地址, 用户授权服务器传送授权码的地址

redirect_uri={$redirect_uri}&appid={$clientId}&response_type=code&scope=snsapi_login&state=STATE

请求密钥方法

GET

请求令牌网址

https://api.weixin.qq.com/sns/oauth2/access_token

请求令牌方法参数

appid={$clientId}&secret={$clientSecret}&code={$code}&grant_type=authorization_code

请求令牌方法

GET

token信息格式

JSON

请求信息网址

由于我们忽略第三步,这里保持为空.

请求信息方法参数

由于我们忽略第三步,这里保持为空.

请求信息方法

由于我们忽略第三步,这里保持为空.

info信息格式

由于我们忽略第三步,这里保持为空.

info信息中用于标识个人的字段

微信返回openid作为用户的唯一标识

openid

infoScriptText

较复杂的情况下可以通过脚本来进行数据转换,这里我们保持为空即可

bindingEnable

选择启用,我们把openid字段存储到用户的open1Id字段.

yes

bindingField

在个人的表用来存储微信openid的字段

open1Id

至此我们完成了微信单点登陆的配置.

配置完成后需要重启系统使配置生效.

绑定

与一般的网站不同,O2OA系统一般先有用户,我们需要完成用户和微信的绑定,再实现可以通过微信的单点登陆.

处于安全的考虑 xadmin 默认管理员不能进行绑定,要用注册的用户进行登陆

登陆系统,选择左上角主菜单 -> 选择右上角个人 -> 选择个人设置 -> 选择单点登陆 -> 点击微信

注销退出重新打开系统,登陆页面将出现微信图标

点击微信登陆,扫描二维码完成登陆。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值