小码农一枚,偶遇一个开发项目(甲方需要订制的基础上整合商城、社区、资讯系统,实现用户的统一管理及同步),这确实就是典型的SSO方案,本次仅就整合CRMEB标准版V4.6为例,简单记录下整合实现的过程。
需求描述:
以当前订制的应用系统(假设为:APP)为基础用户库,在第三方商城系统CRMEB标准版4.6中实现用户同步注册、同步登录、同步用户基本资料;
实现步骤:
一. 订制系统APP 内部实现后台可新增及管理第三方应用的配置信息(appid、app_secret等)、开放给外部应用授权接口(获取accessToken令牌、刷新accessToken令牌)、开放给外部应用获取用户相关接口(获取基本用户资料);
二. 在CRMEB的H5版默认主页页面URL地址中附带上步获取到的授权凭据;
三. 在CRMEB内部系统中拦截URL地址中的授权凭据,并内部进行用户注册、基础资料同步;
四. 调整CRMEB的H5版 特定API ,传递第一步获取到的授权凭据,同步调整 CRMEB系统各种该API的接口(现实基于CRMEB系统的token创建),并在本API中同步返回给客户端 ;
五. 调整第四步中 CRMEB的H5版 特定API 的接口数据返回处理逻辑,存储token及相关数据;
具体实现:
第一步:主要为订制系统APP的内部处理,同步开放给外部第三方访问的授权、鉴权、用户信息查询;
1:订制系统APP内部实现第三方应用(appid、app_secret)的创建、管理、删除等基本操作;
图1:第三方应用的内部管理界面
2:创建基础用户信息数据表(重要字段:全局唯一用户凭据:ticket);
用户基本资料字段:username、mobile、sex、email.....ticket;
用户全局唯一ticket:在订制系统APP中,创建用户时候,根据自定义内部算法规则生成全局唯一的字符串作为每个用户的唯一票据;
3:创建针对外部第三方访问的授权;
- 开放网关授权接口地址:https://api.xxxx.com/gateway.php?s=Gateway.OAuth.GetAccessToken(模拟演示地址,实际不存在,勿点击)
图3:网关授权通过后返回授权令牌access_token及刷新令牌refresh_token :
4:使用上步中获取到的网关授权令牌 access_token 及 第2步中的用户全局唯一ticket 作为参数来请求用户相关资料查询接口(当前主要为获取用户的基本资料);
- 开放网关用户查询接口地址:https://api.xxxx.com/gateway.php?s=Gateway.User.GetUserInfo(模拟演示地址,实际不存在,勿点击)
图4:用户资料查询参数
图5:用户资料查询结果
网友评论