溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

token認(rèn)證是什么

發(fā)布時(shí)間:2022-02-19 10:35:29 來(lái)源:億速云 閱讀:202 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了token認(rèn)證是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇token認(rèn)證是什么文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

以前的開(kāi)發(fā)模式是以MVC為主,但是隨著互聯(lián)網(wǎng)行業(yè)快速的發(fā)展逐漸的演變成了前后端分離,若項(xiàng)目中需要做登錄的話,那么token成為前后端唯一的一個(gè)憑證。

token即標(biāo)志、記號(hào)的意思,在IT領(lǐng)域也叫作令牌。在計(jì)算機(jī)身份認(rèn)證中是令牌(臨時(shí))的意思,在詞法分析中是標(biāo)記的意思。一般作為邀請(qǐng)、登錄系統(tǒng)使用。在開(kāi)始token認(rèn)證之前,我們先梳理下常見(jiàn)的互聯(lián)網(wǎng)認(rèn)證機(jī)制。

一、HTTP Basic Auth

HTTP Basic Auth常見(jiàn)的有兩種:第一種就是最常見(jiàn)的,即我們?cè)诘顷懸恍﹚eb頁(yè)面時(shí),會(huì)讓我們輸入用戶名密碼;另一種是將用戶名密碼信息通過(guò)base64這類算法變換成一條字符串在http請(qǐng)求頭中增加auth字段,再傳輸給服務(wù)端。

這個(gè)屬于最原始級(jí)的認(rèn)證,缺點(diǎn)比較明顯,存在http頭中的密碼信息容易被抓包獲取,用戶名密碼后服務(wù)端后需要查詢數(shù)據(jù)庫(kù)里的信息,進(jìn)行比對(duì)信息,這也增加了服務(wù)器的負(fù)擔(dān)。

二、session+cookie模式

假設(shè)目前我們有一個(gè)查詢類的web站點(diǎn),不可能查詢都要登陸一次,為解決一次登陸,可以在固定一段時(shí)間內(nèi)都免登陸查詢,就出現(xiàn)了session+cookie模式,該模式是第一次登陸時(shí)使用HTTP Basic Auth,認(rèn)證成功后,為避免每次都到數(shù)據(jù)庫(kù)里校驗(yàn)用戶名密碼信息,就在主機(jī)上存儲(chǔ)一份登陸的session信息,在本身cookie里記錄對(duì)應(yīng)的session信息,cookie里同時(shí)保存expire time。

該模式優(yōu)缺點(diǎn)都比較明顯:session信息需要額外的數(shù)據(jù)庫(kù)存儲(chǔ),例如一般需增加redis、memached等應(yīng)用。在多機(jī)負(fù)載時(shí),需要考慮session共享;但好處也是明顯的,session信息統(tǒng)一管理,可以在服務(wù)端統(tǒng)一控制認(rèn)證的過(guò)期時(shí)間或個(gè)別用戶的過(guò)期時(shí)間。

token認(rèn)證是什么

三、簡(jiǎn)單token認(rèn)證

token認(rèn)證最常用的應(yīng)用場(chǎng)景就是查詢接口的調(diào)用(RESTful API),查詢接口的信息在沒(méi)有安全需求時(shí),大家都可以通過(guò)get方法或post方法取得所需信息。但在有安全需要時(shí)一般需要認(rèn)證后才能獲取所需的信息,這時(shí)候可以通過(guò)先能過(guò)HTTP Basic Auth,HTTP Basic Auth認(rèn)證完成后,服務(wù)端返回給客戶端一個(gè)類似于UUID的唯一標(biāo)識(shí),我們稱之為token。該token一般可以在URL或head頭里加入,如以下的常見(jiàn)的URL模式

http://api,361way.com/getinfo?token=xxxxx 或 http://api,361way.com/getinfo?t=xxxxx ,后面再加上相應(yīng)的查詢信息,就可以獲取到相應(yīng)的數(shù)據(jù)。

token的好處是服務(wù)端不需要存儲(chǔ)相應(yīng)信息,但被不懷好意的人從中間獲取到該信息時(shí),也容易被利用,非法獲取數(shù)據(jù)。

由于這個(gè)簡(jiǎn)單的token返回串里未返回相應(yīng)的過(guò)期時(shí)間信息,如果想增強(qiáng)安全性,一般可以在服務(wù)端生成時(shí)配合時(shí)間戳生成,服務(wù)端在接收到client發(fā)來(lái)帶token的信息時(shí),先檢測(cè)反解token獲取時(shí)間戳信息,如果該時(shí)間戳在超過(guò)某個(gè)時(shí)間點(diǎn)時(shí),就認(rèn)為過(guò)期,需要重新獲取。

四、OAuth認(rèn)證

OAuth(開(kāi)放授權(quán))是一個(gè)開(kāi)放的授權(quán)標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問(wèn)該用戶在某一web服務(wù)上存儲(chǔ)的私密的資源(如照片,視頻,聯(lián)系人列表),而無(wú)需將用戶名和密碼提供給第三方應(yīng)用。OAuth允許用戶提供一個(gè)令牌,而不是用戶名和密碼來(lái)訪問(wèn)他們存放在特定服務(wù)提供者的數(shù)據(jù)。每一個(gè)令牌授權(quán)一個(gè)特定的第三方系統(tǒng)(例如,視頻編輯網(wǎng)站)在特定的時(shí)段(例如,接下來(lái)的2小時(shí)內(nèi))內(nèi)訪問(wèn)特定的資源(例如僅僅是某一相冊(cè)中的視頻)。這樣,OAuth讓用戶可以授權(quán)第三方網(wǎng)站訪問(wèn)他們存儲(chǔ)在另外服務(wù)提供者的某些特定信息,而非所有內(nèi)容。

這個(gè)理解起來(lái)比較繞口,舉個(gè)例子,如很多網(wǎng)站上面有qq或微信登陸接口,qq或微信提供的就是OAuth認(rèn)證。OAuth雖然名字很洋氣,其本質(zhì)還是token認(rèn)證,仔細(xì)研究下上面的話,是不是原理上和上面提到的簡(jiǎn)單token認(rèn)證類似,只不過(guò)其加了幾個(gè)callback函數(shù)而已 這里以douban豆瓣網(wǎng)調(diào)用QQ的OAuth節(jié)口為例,其調(diào)用方式如下:

# 發(fā)起認(rèn)證:http://www.douban.com/leadToAuthorize# 重定向到QQ認(rèn)證,并指定回調(diào):http://www.qq.com/authorize?callback=www.douban.com/callback# 返回授權(quán)碼,并callback到doubanhttp://www.douban.com/callback

五、JWT認(rèn)證

JSON Web Token(JWT)是一個(gè)非常輕巧的規(guī)范。這個(gè)規(guī)范允許我們使用JWT在用戶和服務(wù)器之間傳遞安全可靠的信息。一個(gè)JWT實(shí)際上就是一個(gè)字符串,它由三部分組成,頭部(Header)、載荷(Payload)與簽名(Signature)。這里只簡(jiǎn)單說(shuō)下理論,會(huì)另開(kāi)博文深層討論。

Payload里存放的是存儲(chǔ)簽發(fā)者、簽發(fā)時(shí)間、過(guò)期時(shí)間、一些數(shù)據(jù)信息的JSON格式的內(nèi)容。

{ "iss": "Online JWT Builder","iat": 1416797419,"exp": 1448333419,"aud": "www.example.com","sub": "jrocket@example.com","GivenName": "Johnny","Surname": "Rocket","Email": "jrocket@example.com","Role": [ "Manager", "Project Administrator" ]
}

Header里指定存放的是指定使用的協(xié)議JWT、加密簽名的類型,示例如下:

{"typ": "JWT","alg": "HS256"}

最后簽名就是將上面兩者的信息通過(guò)BASE64編碼,再加上密鑰信息,三者之間通過(guò)點(diǎn)號(hào)連接,就組合成的JWT token??梢詫?duì)比簡(jiǎn)單token和JWT的區(qū)別,兩者本質(zhì)上都是token,只不過(guò)JWT在token里多傳輸了一些信息。

關(guān)于“token認(rèn)證是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“token認(rèn)證是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI