在上一篇博客中,自己動手寫了一個Middleware來處理API的授權(quán)驗證,現(xiàn)在就采用另外一種方式來處理這個授權(quán)驗證的問題,畢竟現(xiàn)在也
有不少開源的東西可以用,今天用的是JWT。
什么是JWT呢?JWT的全稱是JSON WEB TOKENS,是一種自包含令牌格式。官方網(wǎng)址:https://jwt.io/,或多或少應(yīng)該都有聽過這個。
先來看看下面的兩個圖:
站點(diǎn)是通過RPC的方式來訪問api取得資源的,當(dāng)站點(diǎn)是直接訪問api,沒有拿到有訪問權(quán)限的令牌,那么站點(diǎn)是拿不到相關(guān)的數(shù)據(jù)資源的。
就像左圖展示的那樣,發(fā)起了請求但是拿不到想要的結(jié)果;當(dāng)站點(diǎn)先去授權(quán)服務(wù)器拿到了可以訪問api的access_token(令牌)后,再通過這個
access_token去訪問api,api才會返回受保護(hù)的數(shù)據(jù)資源。
這個就是基于令牌驗證的大致流程了??梢钥闯鍪跈?quán)服務(wù)器占著一個很重要的地位。
下面先來看看授權(quán)服務(wù)器做了些什么并如何來實現(xiàn)一個簡單的授權(quán)。
做了什么?授權(quán)服務(wù)器在整個過程中的作用是:接收客戶端發(fā)起申請access_token的請求,并校驗其身份的合法性,最終返回一個包含
access_token的json字符串。
如何實現(xiàn)?我們還是離不開中間件這個東西。這次我們寫了一個TokenProviderMiddleware,主要是看看invoke方法和生成access_token