1. 程式人生 > >3.登錄認證

3.登錄認證

In md5算法 輸入 客戶 name 字母 php 拼接 3.2

3.登錄認證

客戶端調用流媒體服務器接口,首先要做的是身份認證,認證通過後才可以調用流媒體服務器的接口。
服務器和客戶端通過“挑戰->應答”方式(challenge-response)進行身份認證交互,在這個過程中,客戶端需要調用兩次接口向服務器證明身份。認證過程中不需要傳遞密碼,密碼用於簽名驗證。
身份認證的過如下:
1)客戶端使用“用戶名”作為參數調用“login1”接口,向服務器發出身份認證請求
1.1)服務器確認用戶是否是有效的用戶:
1.2)若不是,則不做進一步處理,返回錯誤信息
1.3)若是,服務器產生一個“隨機數(挑戰字符串)”發送給客戶端
2)客戶端使用“用戶密碼”和“隨機數(挑戰字符串)”作為輸入,按約定的算法生成一個hash值,用該hash值作為 調用“login2”接口的參數,請求login2接口。

2.1)服務器用收到的hash值與自己的計算結果比較,若二者相同,則通過認證;否則,認證失敗
2.2)若認證通過,服務器返回“token”給客戶端,否者返回錯誤信息。

3.2.login1接口

  • 用途
    客戶端向服務器申請進行身份認證,服務器返回“挑戰字符串”給客戶端。
  • 請求
    users/login1?phone=13888888888

    phone 【必選】 使用註冊的手機號作為登錄服務器的用戶識別信息。

  • 響應
    {
    "code": 0,
    "data": {
        "count": 1,
        "items": [
                     {
                    "phone": "13888888888",
                    "chcode": "uts1m4"
                    }
                ]
    }
    }

    code 等於0,表示用戶有效,items段返回挑戰數據:
    ?phone 登錄用的手機號,下一步需要原樣帶入;
    ?chcode 挑戰字符串。
    code 不等於0,其他值表示錯誤,此時 err_desc 的內容是錯誤描述。

3.2.login2接口

  • 用途
    對login1接口返回“挑戰字符串”進行hash運算,將運算結果提交給服務器,進行身份合法性認證。
  • 請求
    users/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": "5ad4594fe1382314030eabb2",
                "name": "王小虎",
                "email": "[email protected]",
                "phone": "13888888888",
                "cache": "mem",
                "token": "6df901hvwqj4rqsj"
            }
        ]
    }
}

返回內容包括用戶信息和一個token屬性。
token 驗證字符串,用於後續接口的調用。
cache 用戶信息的存儲方式,如果是mem,則後續的接口調用中無需傳遞token參數,否者需要傳遞token參數。

3.3.logout接口

  • 用途
    退出登錄,服務器銷毀用戶登錄信息,作廢“token”。
    建議客戶端在退出系統時總是調用該接口。
  • 請求
    user/logout?token=vvkphp5ca79c538n
  • 響應
    {
    "code":0,
    }

3.登錄認證