خب میخوای احراز هویت بکنی کاربراتو. براشون نقش تعریف بکنی و ...
چه کسی، چه دسترسی هایی دارد و به کجا ها رفته است. برای Access Control ما دو روش داریم:
روش اول Role based Access Control هست. دقیقا مثل نقش هایی هست که تو زندگی واقعی داریم ولی وقتی دیتا ها پیچیده میشه نیاز به اعمال policy روی resource/subject/environment ها داریم.
روش دوم Attribute Based Access Control هست. این روش علاوه بر ویژگی های RBAC روی resource ها و action ها هم تمرکز می کنیم.
نکته مهم اینه که شما JWT رو ممکنه به روش های مختلف کاستومایز بکنی:
خب میبینید که توکنی که تولید میشه خیلی قشنگه. برای تولید این توکن ۳ روش داری جلوی روت
توی passport-jwt ما از دوتا کلید استفاده میکنیم. یه کلید خصوصی برای امضا کردن توکنا و یه کلید عمومی برای دیکد کردن توکن ها. برای تولید این کلید ها هم میتونی از این تیکه کد استفاده بکنی:
const crypto = require('crypto'); const generateKeyPair = util.promisify(crypto.generateKeyPair); let keyPair = await generateKeyPair('rsa', { privateKeyEncoding: { type: 'pkcs1', format: 'pem' }, publicKeyEncoding: { type: 'pkcs1', format: 'pem' }, modulusLength: 4096, }); await fsPromises.writeFile(path.join(__dirname, 'id_rsa_public.pem'), keyPair.publicKey); await fsPromises.writeFile(path.join(__dirname, 'id_rsa_private.pem'), keyPair.privateKey);
تو این کد ها اومدیم خیلی ساده یه کلید عمومی و خصوصی توسط core نود.جیاس تولید کردیم.
و بقیه قضیه رو تو فیلم ببینید:
روش بعدی استفاده از پکیج jsonwebtoken هست. اونم به تنهایی که کاری هست بس طاقت فرسا. ولی خب شاید بعضی ها به دلیل dependency کمتر بخوان این راه رو برن.