2.登錄認證

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,
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章