上一篇博客中,自己動(dòng)手寫(xiě)了一個(gè)Middleware來(lái)處理API的授權(quán)驗(yàn)證,現(xiàn)在就采用另外一種方式來(lái)處理這個(gè)授權(quán)驗(yàn)證的問(wèn)題,畢竟現(xiàn)在也

有不少開(kāi)源的東西可以用,今天用的是JWT。

什么是JWT呢?JWT的全稱是JSON WEB TOKENS,是一種自包含令牌格式。官方網(wǎng)址:https://jwt.io/,或多或少應(yīng)該都有聽(tīng)過(guò)這個(gè)。

先來(lái)看看下面的兩個(gè)圖:

站點(diǎn)是通過(guò)RPC的方式來(lái)訪問(wèn)api取得資源的,當(dāng)站點(diǎn)是直接訪問(wèn)api,沒(méi)有拿到有訪問(wèn)權(quán)限的令牌,那么站點(diǎn)是拿不到相關(guān)的數(shù)據(jù)資源的。

就像左圖展示的那樣,發(fā)起了請(qǐng)求但是拿不到想要的結(jié)果;當(dāng)站點(diǎn)先去授權(quán)服務(wù)器拿到了可以訪問(wèn)api的access_token(令牌)后,再通過(guò)這個(gè)

access_token去訪問(wèn)api,api才會(huì)返回受保護(hù)的數(shù)據(jù)資源。

這個(gè)就是基于令牌驗(yàn)證的大致流程了??梢钥闯鍪跈?quán)服務(wù)器占著一個(gè)很重要的地位。

下面先來(lái)看看授權(quán)服務(wù)器做了些什么并如何來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的授權(quán)。

做了什么?授權(quán)服務(wù)器在整個(gè)過(guò)程中的作用是:接收客戶端發(fā)起申請(qǐng)access_token的請(qǐng)求,并校驗(yàn)其身份的合法性,最終返回一個(gè)包含

access_token的json字符串。

如何實(shí)現(xiàn)?我們還是離不開(kāi)中間件這個(gè)東西。這次我們寫(xiě)了一個(gè)TokenProviderMiddleware,主要是看看invoke方法和生成access_token

網(wǎng)友評(píng)論