国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

基于token的用戶權限認證機制——以微信公眾號授權網頁為例

3fuyu / 2255人閱讀

摘要:微信提供了作為識別用戶身份的憑證,可以結合設計一套用戶身份權限認證機制。認證免疫跨站請求偽造,而認證則存在遭受的可能性。此處的是引導用戶進入授權頁面后微信服務器附加上去的,詳細方法見微信公眾平臺的微信授權網頁文檔。

項目背景

最近在開發一個微信公眾號商城,在調用下單、支付、查詢訂單等等接口時,需要驗證用戶的身份。微信提供了openid作為識別用戶身份的憑證,可以結合openid設計一套用戶身份權限認證機制。考慮到安全性和易實現程度,備選的方案有Session認證機制和Token認證機制,本文在比較了兩者的特點后選擇了Token認證機制,然后詳細闡述了如何實現Token認證機制。

接口設計

在尋找合適的認證方式之前,先說明一下項目前后端的設計。項目的前后端是分離的,前端使用AJAX的方式向后端請求操作資源(增、刪、改);后端接口設計遵循RESTful API原則,結果以JSON格式返回

身份認證備選方案 Session認證

在web網站中,session可以將訪客狀態記錄在服務器中,并分配一個唯一的session id給訪客,并將該id附加在headers中返回給客戶端。客戶端接收到session id后,會將id存儲在cookie,之后客戶端每次訪問服務器,傳送的cookie中都會攜帶session id,服務器以此來識別訪客的身份。

Token認證

token認證方式中客戶端和服務器的交互過程與session的類似,客戶端向服務端請求token,拿到token后,客戶端可以在之后的請求中將token附加在header,以驗證用戶的身份和權限。

比較兩種認證方式

【此處應該列舉諸多不同,但是一定要提到為什么token更適合,而不是session】

token認證更靈活。對于session認證,客戶端每次發送求情都會發送cookie;而對于token認證,可以在需要身份驗證的場景下才發送token。

token允許多域名認證。cookie是綁定單域名的,在a域名生成的cookie無法用于b域名,所以session id無法作為不同域名的共同認證id。而token認證則不受限制,token可以附加在任何請求上。

在客戶端的存儲方式不同。session自動存儲在cookie,而token則需要定義存儲的方式。token通常可以存儲在localStorage(永久存儲,瀏覽器關閉時不清除token)、sessionStorage(瀏覽器關閉時token會被清除)、cookie。值得一提的是,即使將token存儲在cookie,也可以免疫CSRF,因為cookie中的token并不用于認證。

CSRF(跨站請求偽造)。認證免疫CSRF(跨站請求偽造),而session認證則存在遭受CSRF的可能性。

跨站腳本攻擊(XSS)。相對于session認證,token認證更容易遭受跨站腳本攻擊(XSS)。

本項目考慮到Token認證機制更靈活,例如token可以控制是否附加在請求、token本身可以進行自定義加密、可以將token存儲在cookie以外的地方,所以選定Token認證機制作為商城應用的用戶身份權限認證機制。

獲取token的流程

客戶端向服務端token接口提交code,請求獲取token。此處的code是引導用戶進入授權頁面后微信服務器附加上去的,詳細方法見微信公眾平臺的微信授權網頁文檔。

服務端通過code向微信公眾平臺換取用戶的openid。微信授權網頁有兩種授權scope,本項目只需要用戶的openid,不需要用戶更多的信息,所以將scope設為snsapi_base

微信公眾平臺向服務端返回了openid等等信息。

服務端生成token,將token和用戶信息以鍵值對的形式存儲后,服務端返回token給客戶端。

存儲token及用戶信息的流程

服務端獲取用戶的openid后,在數據庫中登記用戶的信息,并取出用戶的id。

服務端以token為key,以openid、user id、權限信息等為value,將該鍵值對存入緩存中。在存入緩存時,注意設置緩存有效時間,過長的有效期存在安全隱患,對于本項目,用戶辦理業務后短時間內不會再訪問,所以將token的有效期設置為2小時。

調用接口時的token認證流程

客戶端將token附加在header,向業務接口發送請求。

業務接口在執行業務邏輯前,憑token驗證用戶的身份。分別驗證以下三點:

token的合法性(有記錄)

token的有效性(沒過期)

Token對應的用戶權限Auth

總結 Token機制的特點

使用靈活,可以選擇性認證。

可以多個域名使用同一token認證體系。

在客戶端的存儲靈活,除了存儲在cookie,還可以選擇localStorage、sessionStorage。

免疫CSRF(跨站請求偽造)。

Token認證機制的三個流程

獲取Token的流程。

存儲Token及身份權限信息的流程。

調用接口時的Token認證流程。特別注意需要驗證token的合法性、時效性、關聯的用戶權限。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28329.html

相關文章

  • 淺析微信支付:開發前準備

    摘要:本文是淺析微信支付系列文章的第三篇,主要會講一下在開發前的一些注意事項。淺析微信支付系列已經更新兩篇了喲,沒有看過的朋友們可以看一下。開通微信支付需要注冊登陸微信商戶平臺,微信支付相關的信息都需要在這個平臺上進行操作。 本文是【淺析微信支付】系列文章的第三篇,主要會講一下在開發前的一些注意事項。 淺析微信支付系列已經更新兩篇了喲~,沒有看過的朋友們可以看一下。 淺析微信支付:前篇大綱...

    yanest 評論0 收藏0
  • 聊聊二維碼登錄

    摘要:場景主要的場景有如下幾個掃二維碼登錄版系統比如微信版,在手機端微信登錄的前提下,掃二維碼確認,自動登錄網頁版。小結二維碼掃描登錄是個挺潮流的功能,這要求既有系統增加改造,也要求針對這種形式的登錄帶來潛在的攻擊進行安全防范。 序 本文主要來研究一下二維碼登錄的相關場景和原理。 場景 主要的場景有如下幾個: app掃二維碼登錄pc版系統 比如微信web版,在手機端微信登錄的前提下,掃二維碼...

    Tikitoo 評論0 收藏0
  • 慕課網_《微信授權登錄》學習總結

    摘要:時間年月日星期六說明本文部分內容均來自慕課網。第六章公眾號與開發平臺關聯公眾號與開放平臺關聯情景說明當使用端進行微信授權登錄時,得到的和公眾號授權登錄時得到的不一樣。 時間:2017年08月12日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹...

    coordinate35 評論0 收藏0
  • 注冊微信開發測試

    摘要:注冊測試號注冊的地址在這里要進行微信公眾號的開發,那就需要一個本地的開發環境來進行開發。而微信測試號就正好提供了這樣的一個環境。通俗一點理解微信要知道訪問它資源是不是這個當前測試號。 注冊測試號 注冊的地址在 這里 要進行微信公眾號的開發,那就需要一個本地的開發環境來進行開發。而微信測試號就正好提供了這樣的一個development環境。每個微信號只能對應一個測試號,但是每個測試號可以...

    channg 評論0 收藏0
  • 自建網站對接微信公眾

    摘要:自建網站對接微信公眾號微信公眾號技術平常我們有些寫各種網站個人博客系統物流管理系統通信錄管理系統校園二手網站我們都知道只需要租用一個服務器再配置一個備案好的域名就可以在瀏覽器上進行訪問了不知大家不知大家有沒有想過將你搭的網站對接微信公眾 title: 自建網站對接微信公眾號date: 2018-04-12 15:25tags: 微信公眾號, PHP codeigniter cat...

    mylxsw 評論0 收藏0

發表評論

0條評論

3fuyu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<