统一认证的实现方案及SAAS支持

时间:2024-03-03 09:51:09

一、建立统一认证中心,企业建立一个用户中心库

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