第三方单点登录接入接口方案

702 阅读2分钟

第三方单点登录接入接口方案

说明

一、问题

目前我们有一套自己的oa系统,oa系统有个门户页面,我们需要在这个门户上单点集成其他系统。每个其他系统都有自己的单点登陆方式,比如其他系统1使用token集成单点,其他系统2使用session集成单点。

思考

如果我们对每一个其他系统都做适配的话,以后接入进来的系统,我们都需要开发,这样不仅会导致工作量太大,而且也不能很好的统一单点登陆。

所以我的设计就是,让其他系统提供一个接口(/autherThirdLogin),接口url和参数我们来定义。这样我们只需要调用 接口,通知其他系统,这个用户需要跳转你的系统。

/autherThirdLogin核心设计

  1. 需要对参数进行签名,防止数据被篡改
  2. 需要对参数进行加密,防止被别人解析
  3. 需要对参数进行失效设计,防止别人截取到url,以后就能直接登录。

二、接口设计

2.1、/autherThirdLogin接口定义

描述

通知其他系统,某个用户需要免登陆跳转到其他系统上 

请求URL

http://第三方系统IP:端口/autherThirdLogin

请求方式

POST 

请求参数

请求参数必选参数类型说明
keytrueString加密的数据

返回字段

返回字段字段类型说明
codeint0 成功,-1失败
messageStringfailure,sucess
dataObject扩展返回的map对象
tokenStringtoken
sessionIdStringsessionId
returnLinkString跳转的url

请求示例

http://localhost:8080//autherThirdLogin?key=7khdRKH-GlI_b454egJjhBJpY0NwA6ulY_zWHyQ7fxbKuTSEdtxO_WeogVRiy0QMqQ7HjbPAa31NWCl-24lqplEtqmC2sO6f9bmGq5OLYEgjmUiU5jlcQ9kZN6K2Nx7_RAZK4DnzRIkYHFRdSwGP7flpfqsaL8zuXcBF-7JcX8fhqEee9YjNVQnUkd8c3HE1H9Alf0L8OjGBr0xrz8WKV92kVcBOtY-kVmQ_c6SbmTo1nLnOpkv55OWjChWbVl9SA4F6q3HVem0gJqKPw-aX4dryQRTu1ZHIZhC15KlNsEgpXuYhdSfD2m6eGJBzaK2B

返回示例

demo

{
    "code": 0,
    "message": "sucess",
    "data": null,
    "token": "123",
    "sessionId": "123",
    "returnLink": "http://ip:端口/autherThirdLogin2"
}

举例案例和demo,参考demo

代码位置 download.csdn.net/download/zh…