一、建立統一認證中心,企業建立一個用戶中心庫
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