###用到的名詞解釋###
ouid : 為生成s2存在,md5(uid)
s0 : pwd (就是使用者的密碼)
s1 : md5(s0)
s2 : md5(s1,ouid) (db中儲存的密碼)
tg1: 客戶端生成的動態秘鑰(客戶端自定義?)
tg2: 客戶端首次提交給伺服器含有tg1的串,tg2=tea(s2, )
tg3: 服務端根據 password 解密出tg1,生成 token 和 refresh token 後用 tg1加密返回給客戶端 tg3 = tea(tg1,)
token : login成功之後生成的票據憑證,每次請求都會帶上
refresh token : login 成功之後生成的票據,token失效並且refresh token 有效的前提下能生成新的 token 和 refresh token
###########
1、password+(uid/mobile/email)登入
登入的時候採用如下的換票流程:
客戶端:自己維護動態的加密密令 tg1,使用者輸入 手機號和password,手機號通過介面轉換成 ouid,通過password+ouid 生成客戶端的 s2,最後生成 tg2
login 介面 接受 傳參:
tg_token : tg2
mobile: mobile
login 介面返回資料
tg3 = tea(tg1,)
通過tg1解密tg3,得到token 和 refresh token
服務端: 接收到 tg2,可以通過db 中的account info 中的passwd 字段解密出 tg1,如果解密成功,證明登入成功,生成 token 和 refresh token ,並用tg1加密返回
token 的有效期 1天
refresh token 有效期 1個月
2、refresh登入
客戶端儲存refresh token 當token 失效後,可以用 refresh token 換取新的token 和 refresh token。
refresh_token介面接收傳參:
uid:使用者id
cltid:client id
refresh_token:
refresh_token介面返回資料:
3、通過mobile、email查詢uid
介面接收引數:
返回引數:
4、修改密碼
忘記密碼
忘記密碼流程:
1、使用者未登入,進入忘記密碼頁面,輸入手機號,傳送驗證碼
傳送簡訊驗證碼介面:
輸入:type : 驗證碼業務型別
mobile : 傳送的目的手機號
輸出:seq_id : 本次驗證碼事務的唯一seq
2、收到驗證碼,輸入新的密碼,傳送到服務端
客戶端收入驗證碼,生成md5(code),取前16位生成 秘鑰 ,對 使用者輸入的password 的s1做加密 encypt_pwd = tea(md5(code) , s1(password) )
設定密碼介面:
輸入:passwd: encypt_pwd
seq_id : 步驟1中生成的 驗證碼的事物id
輸出:成功或者驗證碼失敗
3、服務端收到請求,做校驗檢查,通過則修改密碼
服務端接收到請求,通過seq_id獲取到驗證碼的爭取code,對 passwd 進行解密,如果成功則設定密碼,失敗告知客戶端驗證碼錯誤
重置密碼
重置密碼流程:
1、使用者輸入舊密碼、新密碼,提交到服務端
新密碼用舊密碼的s2加密(newpwd = tea(s2(oldpwd),newpwd)),傳遞到服務端
設定密碼介面:(介面需要校驗token)
輸入:newpwd:tea(s2(oldpwd),s2(newpwd))
uid: 使用者的uid
輸出:成功或失敗
2、服務端接收到請求,先驗證舊密碼是否正確,用舊密碼的s2解密出新密碼,解密成功,就儲存
5、註冊
註冊流程:
1、輸入手機號,傳送簡訊驗證碼
2、輸入驗證碼,輸入密碼,取密碼的s1,取輸入的code,得到 md5(code),取前16位作為秘鑰 生成encrypt_pwd + tea(md5(code) , s1(passwrod)),提交服務端
3、服務端接收到請求,取得爭取code 對 encrypt_pwd 做解密,如果解密成功,則註冊成功
註冊介面:
輸入:passwd: encypt_pwd
seq_id : 步驟1中生成的 驗證碼的事物id
mobile : 手機號
輸出:註冊成功,返回uid、token、refresh token
6、使用者封禁
1、使用者資料增加狀態字段,通過狀態字段標示使用者狀態
如: status 字段,0 是正常,-5 是封禁狀態, -1是未啟用狀態, -2 是再啟用狀態
2、使用者封禁操作就是設定使用者狀態,並清除token,登入介面對使用者狀態最判斷,如果是封禁狀態則拒絕登陸,如果是再啟用狀態,需要手機驗證後置為正常狀態
如何設計乙個安全的登入流程
登入是系統中最重要的乙個功能之一,登入成功就能擁有系統的使用權利,所以設計乙個安全的登入流程是十分必要的,那在一般登入中需要考慮哪些重要因素呢?我們一一列表一下。使用https協議進行傳輸,雖然麻煩,但是很強的保護措施。強制使用者使用有一定強度且複雜的密碼,必須要有大小寫加數字,長度在8位以上,杜絕...
後台登入流程設計
關於後台登入步驟的流程 1.後台登入控制器 registercontroller 1.getimagevalidate 方法說明 登入頁面,載入驗證碼 防止暴力破解 的時候,需要乙個key在伺服器端儲存驗證碼生成的數字值,這個時候在smart1controller控制器中,使用了accesskeyf...
關於登入 token 的設計
設計要點 token 中不要加入到期時間,因為每次有效請求,都要更新 token 的到期時間,如果把到期時間加入到 token 中,那麼每次請求就要生成新的 token 並且隨同請求資料返回給客戶端替換舊的 token,這樣實在是太麻煩了,也沒有必要吧 可以把 token 儲存在 redis 等快取...