記錄一下第三方應用想通過免密登錄直接跳轉到禪道。
通過嘗試可以有兩種方式實現:
1、 通過禪道系統的免密登錄
地址:http://192.168.100.170:88/zentao/api.php?m=user&f=apilogin&account={用戶名}&code={代號}&time={時間戳}&token={生成的token}
標紅部分不變,account 用戶名 code 免密登錄代號,time 時間戳 token:MD5(代號+密鑰+時間戳)
Eg. Token = MD5(TestLoginqblpruzi3nx9xpypa2dcza3yfxwr3iyd1588987060)
zt_entry 表里可以查到,代號,密鑰。
Code:是免密登錄的代號,管理員用戶在后台-二次開發-應用模塊配置
UserName:登錄禪道用戶名
通過鏈接可以跳轉到該用戶的我的地盤
這種方法可以登錄成功,但是沒有驗證第三方應用的賬號密碼,很不安全。
2、第二種方式,是在驗證登錄第三方應用的同時,調用方法生成一個sessionid,寫到session里。登錄禪道的時候取sessionid去登錄禪道
(1)調用禪道接口生成sessionid
獲取禪道SessionID
調用接口返回一個SessionName,SessionId。訪問禪道的接口都需要帶上SessionId。
GET: http://192.168.100.170:88/zentao/api-getsessionid.json
響應:
{"status":"success","data":"{\"title\":\"\",\"sessionName\":\"zentaosid\",\"sessionID\":\"c5ecbbmvvr4qqcnc1fkip1b5p4\",\"rand\":9126,\"pager\":null}","md5":"fdc017fc4453f4c7d0d2daa72565cc90"}
取到sessionID的值。
(2)用生成的sessionid去登錄
POST:
http://192.168.100.170:88/zentao/sso-login-notify.json?zentaosid=c5ecbbmvvr4qqcnc1fkip1b5p4
參數:
{
"account": "", --用戶名
"password": "" --密碼
}
可以實現登錄