JSON Webトークン:JWTを使用して承認RESTful API
✔ JWTとは
💡 JSON Web Token is an open and standard (RFC 7519) way for you to represent your user’s identity securely during a two-party interaction. Particularly, when two systems exchange data you can use JSON Web Token to identify your user without having to send private credentials on every request.
JWTは典型的にこのように見える
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzODY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk1OTUiLCJxc2giOiI4MDYzZmY0Y2ExZTQxZGY3YmM5MGM4YWI2ZDBmNjIwN2Q0OTFjZjZkYWQ3YzY2ZWE3OTdiNDYxNGI3MTkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQ.uKqU9dTB6gKwG6jQCuXYAiMNdfNRw98Hw_IWuA5MaMo
一見して複雑に見えますが、あなたが理解するならば、JWTの構造は以下の通り単純です<base64-encoded header>.<base64-encoded payload>.<base64-encoded signature>
言い換えれば、よく形成されたJWTは3つの連結されたbase 64 url符号化されたストリングから成ります.✔ JWTによるRESTful APIのビルド
まず「JWT」という名前のフォルダーを作成し、プロジェクトの構造を見てみましょう
次に、JWTディレクトリの下でコマンドラインを開き、このコマンドを書きます
npm install --save express body-parser morgan jsonwebtoken
1 -インデックス。js
const express = require('express'),
bodyParser = require('body-parser'),
jwt = require('jsonwebtoken'),
config = require('./configurations/config'),
cors = require('cors'),
app = express();
//set secret
app.set('Secret', config.secret);
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// parse application/json
app.use(bodyParser.json());
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
app.get('/', function (req, res) {
res.send('App is running on http://localhost:3000/');
});
2 -設定/設定。js
module.exports = {
secret: "heymynameisminh"
}
さて、EverthingがOKであるかどうかチェックしてください😃 このコマンド行を実行します.node index.js
❗️ Make sure that you are standing in the right directory to run index.js file (following our project structure)
あなたのブラウザをhttp://localhost:3000/で開きます
よくできた!万事うまくいく.行き続ける
認証システムの設定
データベース内のユーザ名とパスワードを「techx」と「123」とし、このコードをインデックスに書き込みます.jsファイル
app.post('/authenticate', function (req, res) {
console.log(req.body);
if (req.body.username !== "techx") res.json({ message: "user not found!" });
if (req.body.password !== "123") res.json({ message: "please check your password!" });
const payload = {
check: true
}
let token = jwt.sign(payload, app.get('Secret'), {
expiresIn: 14000
});
res.json({
message: 'authentication done',
token: token
});
});
さあ、郵便配達人でテストしましょうパーフェクト!😃 私たちはHTTPリクエストをサーバーに送りました.今のところ、クライアントは既にトークンを持っていました.次のステップに進みましょう
const ProtectedRoutes = express.Router();
app.use('/api', ProtectedRoutes);
ProtectedRoutes.use((req, res, next) => {
let token = req.headers['access-token'];
console.log(token);
if (!token) res.send({ message: 'No token provided.' });
jwt.verify(token, app.get('Secret'), (err, decoded) => {
if (!err) { req.decoded = decoded; next(); }
return res.json({ message: 'invalid token' });
})
});
ProtectedRoutes.get('/getAllProducts', (req, res) => {
let products = [
{
id: 1,
name: "cheese"
},
{
id: 2,
name: "carottes"
}
]
res.json(products)
});
すべてのデータを取得する2つの異なる方法を比較しているトークンによる
トークン
Reference
この問題について(JSON Webトークン:JWTを使用して承認RESTful API), 我々は、より多くの情報をここで見つけました https://dev.to/developerminhvo/web-api-security-3ccfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol