统一认证的实现方案及SAAS支持
一、建立统一认证中心,企业建立一个用户中心库
1、用户角色分类
1)租户
2)普通访客
2、统一公司信息
注册的用户需要绑定着公司信息
二、统一认证平台提供统一的注册和登录接口
1、用户注册
前提:所有应用要想利用统一认证,必须首先注册一个租户,租户注册接口分配给租户一个公司,应用开发者需要记录这个公司KEY,
1)租户注册接口(无需认证)
租户注册时,租户注册接口分配给租户一个公司,应用开发者需要记录这个公司KEY。
适用场景:开发一个公司区隔的SAAS应用,需要多次调用这个接口创建多个公司租户
2)租户创建普通用户接口(需认证:租户登录获取访问jwt-token,认证拦截设置租户公司id在请求头中)
适用场景:租户作为某个应用管理员,创建自己应用的普通用户,创建时候,普通用户的公司取请求头中公司ID
注意:本接口需要访问token才可以访问
3)注册普通用户接口(无需认证)
适用场景:从应用的前端非管理页面,普通访客用户自由注册,需要在请求头中设置X-COMPANY-KEY,值是注册租户时返回,应用开发者需要交给前端开发者(前端直接调用)或后台控制器转调统一认证API时,在后台代码设置
4)用户登录接口
A、用户名和密码
适用场景: 登录后,返回访问token,客户端后续请求需要在请求头中设置
B、电话、认证码登录/注册接口
适用场景: 利用电话完成登录,返回访问token,客户端后续请求需要在请求头中设置
三、各应用SAAS的实现
利用一、二完成准备,并登录后,转发给后续请求头中会设置有唯一的用户名、公司ID,等信息
各应用可以利用公司ID,完成自己的SAAS
四、为了减少各个应用的开发量,和调用如上接口的复杂性
1、实现统一的租户注册页面(开放平台)
2、各应用普通自由用户的注册页面
3、租户登录页面
4、个体登录页面
为了简化,利用电话并同时设置密码来实现注册
第三方应用开发过程
1.建立应用--AKKKEY-appkey
2.建立租户,返回公司KEY--companykey---到开放平台注册,可以考虑给于建立APP的权力--appkey,添加创建者关系
3.第三方应用建立登录/注册链接,开放平台地址,open.gongsibao.com/login?appkey=xxxx&companykey=xxx&redirect-url=rdurl&state=xxxx
平台实现了按照电话号码和验证码进行注册或登录
实现思路:
注册或登录请求头,会注入:appkey--companykey-redirect-url-state,
服务端会根据请求头里的redirect-url来判断返回的数据格式,如果包含:返回{status:0,data:{redirecturl:rdurl?code=xxx&state=xxxxx}}
登录注册页面根据返回的数据中是否存在redirecturl,来执行,如果存在那么就执行location.href=rdurl?code=xxxxx,第三方应用中需要实现authByCode方法
平台也要实现authByCode,按照code返回用户相关的信息,包括访问tocken
第三方应用加载完成时,如果不存在token,需要按照code去调用平台的authByCode,如果获取失败,那么就重新调转到第三方登录链接
4、关于角色和授权
租户在平台注册并登录后,租户isadmin标示是否是租户,租户默认没有平台应用系统管理功能。只有超级管理员sm才有系统管理的功能,
强调的是:
系统管理一定属于某个应用的管理员
超级管理员是平台应用的管理员,所以只有超级管理员在平台应用中,对系统管理有操作权限。当前应用是平台应用大前提下,系统管理菜单对租户不可见。
租户是租户创建的应用的管理员,系统管理菜单在
注意:创建租户时,appkey,要利用平台的APPKEY