項目上接到一個需求,為方便員工登錄各種內部系統,統一以企業微信為入口,在企業微信面板中增加系統跳轉鏈接實現單點登錄。
整體思路比較簡單,大致如下:
1.由於自建系統和企業微信的用戶ID不同,所以需要建立一張用戶對應表,通過企業微信API獲取用戶列表將兩個系統的用戶關聯起來。
2.在企業微信管理后台填寫系統跳轉鏈接,跳轉時url會增加code參數,這個code就是當前登錄用戶的加密字符串。
3.在自建系統中獲取到code參數后調用企業微信獲取成員信息API,返回結果中包含企業微信用戶ID。
4.拿到企業微信用戶ID后到用戶對應表中查找,如果有對應用戶記錄,則使用自建系統的用戶ID執行登錄操作。
接下來是具體實現步驟:(文中wwlocal.qq.com需指向企業微信的服務器地址)
1.首先到企業微信的接口配置參數頁面查看相關信息,紅框部分是關鍵信息,調用API時需要用到:
2.調用獲取部門成員詳情接口獲取員工列表,總共需要三個參數:access_token、department_id、fetch_child,其中access_token需要單獨獲取
3.獲取access_token,這個在文檔的開頭有介紹
調用獲取token的接口,需要兩個參數:corpid、corpsecret,這時候就用到了第一步截圖中的信息,結果返回后為避免頻繁調用,建議將token緩存,有效期一般為2小時。
4.員工列表接口請求完成后與系統用戶做對比進行關聯操作,然后進行下一步,在企業微信管理后台添加自建系統跳轉鏈接,詳細內容請查看開發文檔中-OAuth2.0網頁授權 章節。
5.通過企業微信面板登錄管理后台:
登錄后可看到如下頁面:
首先在網頁授權及JS-SDK中設置可信域名,直接寫ip即可,有端口號的需要加上,不需要加http頭
然后到自定義菜單中配置需要跳轉的系統鏈接:
這里的鏈接需要按照開發文檔 OAuth2.0網頁授權章節中的關鍵步驟部分,鏈接默認打開的是內置的瀏覽器,如果需要打開外部默認瀏覽器需要增加參數:&target=out
6.跳轉后的效果如下,code參數就是我們需要的信息,這里的code只能使用一次且有效時間為5分鍾:
OAuth2.0流程圖如下:
7.最后一步,需要做的就是用拿到的code參數調用獲取成員信息接口,根據返回用戶信息與系統用戶對比進行后續登錄等操作。
以上就是企業微信單點登錄自建系統的整個過程,特此記錄以作回顧,分享給有需要的同學們,祝大家生活美好,工作順利!
2020.6.19 北京昌平