2.登錄認證
客戶端調用流媒體服務器接口,首先要做的是身份認證,認證通過後纔可以調用流媒體服務器的接口。
服務器和客戶端通過“挑戰->應答”方式(challenge-response)進行身份認證交互,在這個過程中,客戶端需要調用兩次接口向服務器證明身份。認證過程中不需要傳遞密碼,密碼用於簽名驗證。
身份認證的過如下:
1)客戶端使用“用戶名”作爲參數調用“login1”接口,向服務器發出身份認證請求
1.1)服務器確認用戶是否是有效的用戶:
1.2)若不是,則不做進一步處理,返回錯誤信息
1.3)若是,服務器產生一個“隨機數(挑戰字符串)”發送給客戶端
2)客戶端使用“用戶密碼”和“隨機數(挑戰字符串)”作爲輸入,按約定的算法生成一個hash值,用該hash值作爲 調用“login2”接口的參數,請求login2接口。
2.1)服務器用收到的hash值與自己的計算結果比較,若二者相同,則通過認證;否則,認證失敗
2.2)若認證通過,服務器返回“token”給客戶端,否者返回錯誤信息。
2.1.login1接口
- 用途
客戶端向服務器申請進行身份認證,服務器返回“挑戰字符串”給客戶端。 - 請求
session/login1?phone=13888888888
phone 【必選】 使用註冊的手機號作爲登錄服務器的用戶識別信息。
- 響應
{ "code": 0, "data": { "count": 1, "items": [ { "phone": "13888888888", "chcode": "uts1m4" } ] } }
code 等於0,表示用戶有效,items段返回挑戰數據:
phone 登錄用的手機號,下一步需要原樣帶入;
chcode 挑戰字符串。
code 不等於0,其他值表示錯誤,此時 err_desc 的內容是錯誤描述。
2.2.login2接口
- 用途
對login1接口返回“挑戰字符串”進行hash運算,將運算結果提交給服務器,進行身份合法性認證。 - 請求
session/login2?phone=13888888888&hash=c869b2aab17c4c8e33f046e168ba4fd5
phone 【必選】 手機號碼。
hash【必選】 是使用用戶密碼和挑戰字符串作爲輸入計算出的md5摘要值(hash),算法如下:
hash=md5(md5(password)+challenge_code)
算法描述:首先計算出密碼的hash值,然後在生成的密碼hash值尾部拼接上挑戰字符串形成新的字符串,最後計算這個新字符串的hash值。
hash算法採用md5算法,生成的摘要採用16進制編碼,編碼生成的字符采用小寫字母。
例如,字符串111111的hash值是 96e79218965eb72c92a549dd5a330112
- 響應
code >0 其他值表示錯誤,此時 err_desc 的內容是錯誤描述。
code 0 表示登錄成功,在data數據段返回token和用戶信息。
{
"code": 0,
"data": {
"count": 1,
"items": [
{
"id": "5",
"name": "王小虎",
"email": "[email protected]",
"phone": "13888888888",
"role": 1,
"icon": "xxxx",
"token": "6df901hvwqj4rqsj"
}
]
}
}
返回內容包括用戶信息和一個token屬性。
id
name
phone
email
icon 頭像
role 角色,定義參見用戶查詢接口
token 驗證字符串,用於後續接口的調用。
cache 用戶信息的存儲方式,如果是mem,則後續的接口調用中無需傳遞token參數,否者需要傳遞token參數。
2.3.微信登錄接口
- 用途
對login1接口返回“挑戰字符串”進行hash運算,將運算結果提交給服務器,進行身份合法性認證。 - 請求
session/wxLogin
- 參數
outer_id=abcdex&name=微信用戶&icon=http://.../myicon.png&sex=2
outer_id 【必選】 微信系統中的用戶編號
name 【必選】 微信系統中的用戶暱稱
icon 【必選】 微信系統中的用戶頭像
sex 【必選】 微信系統中的用戶性別 1=男士,2=女士
- 響應
code >0 其他值表示錯誤,此時 err_desc 的內容是錯誤描述。
code 0 表示登錄成功,在data數據段返回token和用戶信息。
{
"code": 0,
"data": {
"count": 1,
"items": [
{
"id": "5",
"name": "王小虎",
"email": "[email protected]",
"phone": "13888888888",
"role": 1,
"icon": "xxxx",
"token": "6df901hvwqj4rqsj"
}
]
}
}
返回內容包括用戶信息和一個token屬性。
id
name
phone
email
icon 頭像
role 角色,定義參見用戶查詢接口
token 驗證字符串,用於後續接口的調用。
2.4.logout接口
- 用途
退出登錄,服務器銷燬用戶登錄信息,作廢“token”。
建議客戶端在退出系統時總是調用該接口。 -
請求
session/logout - 響應
{ "code":0, }
2.5.修改密碼
- 用途
對login1接口返回“挑戰字符串”進行hash運算,將運算結果提交給服務器,進行身份合法性認證。 - 請求
session/changePwd
-
參數
old 舊密碼
new 新密碼 - 響應
{ "code":0, }