今天學習了網易雲課堂的 盛派的微信開發課程之OAuth微信網頁受權:OAuth原理,邊聽邊來波筆記;api
一、什麼是OAuth?安全
OAuth 你的接口提供給別人使用,你須要提供Oauth,可讓被人使用,也可使用別人的OAuth
OAuth2.0安全性更高服務器
OAuth2.0的流程微信
開發者服務器或APP <---------------------------------------------------------->微信服務器微信開發
一、A:客戶端(應用服務器)向服務器(對應微信服務器)發送驗證請求,請求中通常會攜帶這些參數:學習
ID:標識,例如微信公衆號的APPId,加密
驗證後跳轉到的URL(redirectUrl)code
狀態參數(可選)blog
受權做用域(可選)接口
響應類型(可選)
二、B:服務器端返回一個grant受權標識(微信默認狀況下稱之爲Code),就像一個一次性的臨時字符串密鑰,若是A中提供了
redirectUrl,這裏服務器會作一次跳轉,帶上grant和狀態參數,訪問redirectUtl.
三、C:客戶端的redirectUrl對應頁面,憑藉grant再次發起請求,此次請求中一般會攜帶一些敏感信息:
ID:標識 (微信公衆號的APPId)
密碼
grant字符串(code)
grant類型(可選、微信中默認爲code)
四、D:服務器驗證ID標識、密碼、grant都正確後,返回AccessToken(注意:這裏的AccessToken和以前通用接口、高級接口介紹的AccessToken沒有關係,不能交叉使用)
五、E:客戶端憑藉AccessToken請求一系列的API,在此過程當中不會攜帶AppId,Secret,grant等敏感信息。
六、F:服務器返回請求結果
第一步是用戶直接操做的,最後一步返回用戶的基本信息
微信中兩種受權方式:
一、顯示受權 snsapi_userinfo 特色:有受權,不管用戶有無關注公衆號,都能獲得詳細的信息 如 openId,暱稱、頭像 性別 、所在地區等等
二、靜默受權: snsapi_userinfo 特色:若是用戶沒有關注,只能得到OpenId
混合使用:先用靜默受權 獲取openId,若是尚未關注,就顯示的受權,
增強帳號和密碼的安全性:
一、客戶端將密碼加密後傳輸到服務器
二、服務器端使用」加鹽「的方式進行混淆加密,嚴謹明文存儲密碼
三、儘可能不要使用Cookie存儲用戶名、尤爲是OpenId,更不要在Url中傳輸OpenId
四、你必須知道:Session常規狀況下也是依賴Cookie才能起做用的,因此不要覺得Session和客戶端安全無關!
五、Https不能解決全部安全問題!