Posts match “ json-web-token ” tag:

授權方式(Auhorization): CC-BY 4.0

Why JSON Web Token

後端不再吐template交給前端去做,而只負責json api的輸出時,為了保護api endpoint被人找到進而直接爬你資料。
過去可以利用網址加流水號的方式,現在也可以改用get /api/article/1 ... blahblah
為了保護後端資料必須使用jsonwebtoken來替api endpoint做存取限制

What is JSON Web Token

利用一組key (secret or signature) sign出一個token,把token存在client side,每次帶這個token去跟server做request。然後server side會去verify這個token是否正確,否則回傳401。

token 由三個部分組成 header, payload, signature
可以在payload裡面加入exp (expire time), audience, issuer 來做進一步應用

client side可以利用sessionStorage或localStorage存token,但切記還是不要將重要資料放在payload裡面,因為可以用base64去decode出來。

Usage (eg. express)

如果用express的話非常簡單

安裝express-jwt

$ npm i express-jwt

在configure加上jwt保護

require! <[express-jwt]>
secret = 'Iamsecret.IcanbeanythinIwanttobe'
jwt = express-jwt
app.use '/api' jwt secret:secret

More

隨著websocket的應用程式越來越多, 也必須到過去cookie-based的auth機制在websocket運作上面可能會有問題。
如果改成用toke-based來做ACL控制,會比傳統的authentication安全許多,大概會在下篇作探討。