JWT的簡述
JWT是JSON Web Token的縮寫,使用cookie的解決跨域認證的問題,和cas系統是不一樣的理論。具體可以看一下大神些的文檔:http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html
Kong的 JWT
- 環境準備
你應該有一個能正常運行的service和route,如果沒有的話,你可以參考https://blog.csdn.net/u014686399/article/details/100084613,我的試驗也是基於這個的 - 啓用jwt插件
/services/2fc52878-1fe9-48ba-bc45-146da3822851/plugins POST
{
"name":"jwt"
}
- 2fc52878-1fe9-48ba-bc45-146da3822851這是service的id
- jwt是固定值
- 創建一個consumer
/consumers/ POST
{
"username":"xjj_user_01",
"custom_id":"users_001"
}
- 創建一個jwt證書
/consumers/f4c713c0-6bf1-4079-83a0-135180d6ba53/jwt POST
- f4c713c0-6bf1-4079-83a0-135180d6ba53 這是consumer的id
- 雖然是post請求,但是沒有請求體
- 默認是用的是HS256
- 請求頭使用 Content-Type: application/x-www-form-urlencoded
- 通過https://jwt.io/創建signature
這是固定值
這裏是cookie裏面要攜帶的數據
製作簽名,圖片中箭頭的位置填寫,consumer的證書的secret
- 測試直接訪問,會返回沒有授權
- 添加Authorization頭
curl http://172.16.0.92:31545/xjj_tv/main \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoieGlhcGpqIiwiYWdlIjoxNywiYWRkcmVzcyI6IkJKIiwiaXNzIjoiaEloZE1PQUZwaTlKS3E5bFpQTjRmVlUxVDkzalZJcjgifQ.lAePxvD4NjYzLRzx1rfKzdF5MNhQA-Oc5TPrzx85o2A'
下面是我的服務接收到的請求頭
- 生成簽名還可以使用RS256 or ES256,這個可以參考官網
先寫到這裏了,有問題進QQ羣630300475