用於驗證的 Passport.js 與 JsonWebToken 是什麼關係?
- 使用 AngularJS NodeJS 實現基於 token 的認證應用 - 前端外刊評論 - 知乎專欄
- passport.js學習筆記
- Socket.io基於Token的認證
第一次答題,未邀自來
passport是一個簡單的專註與用戶驗證的nodejs庫,它擁有很多用於驗證的策略passport 比方說Local(本地鏈接資料庫,自己實現驗證邏輯),OpenID(基於OpenID的驗證),Google(谷歌賬戶的驗證),開發者可以根據業務需求,選擇一種或多種策略來構建自己應用的驗證模塊就像這樣
//為項目中的passport增加本地驗證的策略
passport.use(new LocalStrategy(
function (username, password, done) {
// 鏈接資料庫,進行驗證
#yourcode#
}
));
//在介面中使用passport來進行驗證
router.get("/token", passport.authenticate("local"),
function (req, res) {
res.send({#token#});
}
);
JSON Web Tokens 是一種非常輕巧的規範,這個規範規定了客戶端與伺服器交互時的一些信息的傳遞方式,它分為三部,頭部、載荷與簽名。
頭部(Header)用於描述這個應用中使用的JWT的基本信息,如簽名所用的加密方法等{
"typ": "JWT",
"alg": "HS256"
}
typ:種類
alg:加密類型
你當然可以使用其他的加密演算法載荷(Payload)用於描述這個應用中使用的JWT的實際信息,如接收方,過期時間等{
"iss": "John Wu JWT",
"iat": 1441593502,
"exp": 1441594722,
"aud": "www.example.com",
"sub": "jrocket@example.com",
"from_user": "B",
"target_user": "A"
}
iss: 該jwt的簽發者
iat:簽發時間
aud:接收方簽名(簽名)用於校驗Header和Payload的合法性關於JWT的更多的信息可以從此JSON Web Token中獲取
現在就可以理解passport和jwt的關係了
passport只是一個用來驗證的庫,而jwt是一種規範。jwt並不是僅僅可以在passport中使用,jwt可以以任意一種語言來實現,如java等,可以搭配其他的nodejs庫來使用比方說everyauth。 而passport也可以搭配其它的驗證策略比方說OpenID,OAuth2等
如果你想在你的項目中使用passport和jwt的話,那就需要先導入passport庫,然後為passport增加一種基於jwt的策略。
當然這件事情已經有人做好了,passport-jwt 會減少更多的工作量。
祝你工作愉快推薦閱讀:
※「遵循XXX開源協議」這句話規定了什麼,我要把某個js工具用在項目中,我具體要做哪些事情才算遵循協議?
※什麼是JS跨域訪問?
※請問如果一個線程能夠非同步執行,是否是因為另一個線程幫其承擔了同步的操作?
※理解 React,但不理解 Redux,該如何通俗易懂的理解 Redux?
※一個 ul 里有若干 li,點擊 li 時能方便地知道這是 ul 中的第幾個 li 嗎?
TAG:JavaScript | 網路安全 | Nodejs | RESTful | Express框架 |