๐ ุงููุฑู ุจูู Hashing ู Encryption ู Salting ู Pepper
.
.
ุงูุฃุฑุจุน ู ุตุทูุญุงุช ูุฑูุจูู ู ู ุจุนุถ ูู ุฅู ูููู ูููู ุนูุงูุฉ ุจุชุฃู ูู ุงูู data. ุจุณ ุงูุญูููุฉ ุฅู ูู ูุงุญุฏ ูููู ููู ูุฏู ู ุฎุชูู ุชู ุงู ูุง ูุทุฑููุฉ ุงุณุชุฎุฏุงู ู ุฎุชููุฉุ ููู ุฎูุทุช ุจูููู ุฃู ุงุณุชุนู ูุช ุญุงุฌุฉ ู ูุงู ุงูุชุงููุฉ ูุชุนู ู ู ุดููุฉ ูุจูุฑุฉ ูู ุงูุณูุณุชู ุจุชุงุนู.
ุชุฎูู ู ุนุงูุง ุฅูู ุจุชุนู ู ู ูุตุฉ ูููุง ู ุณุชุฎุฏู ูู ุจูุณุฌููุง ุจุงูุฅูู ูู ูุงูุจุงุณูุฑุฏ. ุทุจูุนู ุฅูู ูุงุฒู ุชุฎุฒู ุงูุจุงุณูุฑุฏ ุจุดูู ุขู ูุ ุตุญุ ููุง ุจูู ุงูุณุคุงู:
- ูู ุฃุฎุฒู ุงูุจุงุณูุฑุฏ ุฒู ู ุง ูู plain textุ
- ุทุจ ูู ุฃุนู ูู Encryptionุ
- ููุง Hashing ููุงูุฉุ
- ุทุจ ุฅูู ูุงุฒู ุฉ ุงูู Saltุ ูุฅูู ุงููุฑู ุจูููุง ูุจูู ุงูู Pepperุ
โโโ
ุงูู Hashing ูู ุฅูู ุจุชุญูู ุงูู data (ุฒู ุงูุจุงุณูุฑุฏ) ูุณูุณูุฉ ู ู ุงูุฃุฑูุงู ูุงูุญุฑูู ู ููุงุด ู ุนูู.
ุงูู ูุฒุฉ ุงูุฃุณุงุณูุฉ: ุฏู one-wayุ ูุนูู ุชูุฏุฑ ุชุญูู ุงูุจุงุณูุฑุฏ ูู hashุ ููู ู ุณุชุญูู ุชุฑุฌุน ู ู ุงูู hash ููุจุงุณูุฑุฏ.
๐ ุงููุฏู: ุชุณุชุฎุฏู ู ุนุดุงู ุชุชุญูู ู ู ุงูุจูุงูุงุชุ ู ุด ุนุดุงู ุชุณุชุฑุฌุนูุง.
ู ุซุงู: ุงูู ุณุชุฎุฏู ูุฏุฎู ุงูุจุงุณูุฑุฏุ ูุฃูุช ุชุนู ูู hash ุจููุณ ุงูู algorithm ูุชูุงุฑู ู ุน ุงููู ู ุฎุฒูู.
โ ุงูู ุดููุฉ: ูู ุงุชููู ู ุณุชุฎุฏู ูู ุนูุฏูู ููุณ ุงูุจุงุณูุฑุฏุ ุงูู hash ุจุชุงุนูู ููุจูู ููุณ ุงููุชูุฌุฉ. ูุฏู ุจูุฎูู ุงูู ูุถูุน ุนุฑุถุฉ ููุฌู ุงุช ุฒู ุงูู Rainbow Tables.
โโโ
ุงูู Encryption ู ุฎุชูู ุชู ุงู ูุง. ููุง ุจุชุนู ู ุนู ููุฉ reversible (ูุนูู ูููุน ุชุฑุฌุน ููุจูุงูุงุช ุงูุฃุตููุฉ).
ุชุฎุฒู ุงูู data ู ุดูุฑุฉุ ูุชูุฏุฑ ุชูููุง ุจุงูู key.
๐ ุงููุฏู: ุญู ุงูุฉ ุงูุจูุงูุงุช ุงููู ูุงุฒู ุชุณุชุฑุฌุนูุง ุฒู ุงูุฑุณุงุฆูุ ุงูู ููุงุชุ ุจูุงูุงุช ุงููุฑูุฏุช ูุงุฑุฏโฆ ุฅูุฎ.
ู ุซุงู: ุชุดููุฑ ุฑุณุงูุฉ ูู ูุงุชุณุงุจุ ุงูู ุณุชูุจู ููุฏุฑ ููููุง ุจุงูู key ูุงูุฑุณุงูุฉ ุงูุฃุตููุฉ ุชุฑุฌุน.
โ ุงูู ุดููุฉ: ูู ุงูู key ุงุชุณุฑุจุ ูู ุญุงุฌุฉ ู ูุดููุฉ.
โโโ
ุงูู Salt ูู string ุนุดูุงุฆู ุจุชุถููู ููุจุงุณูุฑุฏ ูุจู ู ุง ุชุนู ูู hash.
ูููุ ุนุดุงู ุชู ูุน ุงููุฌู ุงุช ุงููู ุจุชุนุชู ุฏ ุนูู ุฅู ููุณ ุงูุจุงุณูุฑุฏ ุนูุฏู ููุณ ุงูู hash.
๐ ุงููุฏู: ุชุนู ู ูู hash ู ุฎุชูู ุญุชู ูู ููู ุงุช ุงูุณุฑ ู ุชุดุงุจูุฉ.
ู ุซุงู:
- ู ุณุชุฎุฏู 1 = "123456" + SaltA โ hash1
- ู ุณุชุฎุฏู 2 = "123456" + SaltB โ hash2
ุฑุบู ุฅู ุงูุจุงุณูุฑุฏ ูู ููุณูุ ููู ุงูู hash ู ุฎุชูู.
โโโ
ุงูู Pepper ุดุจู ุงูู Salt ููู ูู ููุทุฉ ู ุฎุชููุฉ: ุจูููู secret value ุจุชุถููู ููุจุงุณูุฑุฏ ูุจู ุงูู hashing.
ุจุนูุณ ุงูู Salt ุงููู ู ู ูู ูุชุฎุฒู ู ุน ุงูู hashุ ุงูู Pepper ู ุด ุจูุชุฎุฒู ูู ุงูุฏุงุชุงุจูุฒุ ุจูุชุฎุฒู ูู config ุขู ู ุฃู environment variable.
๐ ุงููุฏู: ุชุถูู ุทุจูุฉ ุญู ุงูุฉ ุฅุถุงููุฉ ุถุฏ ุฃู ุญุฏ ูุณุฑู ุงูุฏุงุชุงุจูุฒ. ุญุชู ูู ู ุนุงู ุงูู hashes + saltsุ ูุณู ูุงูุตู ุงูู pepper.
โโโ
ููู ุงุช ุงูุณุฑ ูุงุฒู ุชุชุญูุธ ุจุงูู Hashing + Salt + Pepperุ ู ุด ุจุงูู Encryption.
ุงูู Encryption ู ูุงูู ูู ุงูุจูุงูุงุช ุงููู ูุงุฒู ุชุณุชุฑุฌุนูุง ุฒู ุงูุฑุณุงุฆู ุฃู ุงูู ููุงุช.
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
.
.
ุงูุฃุฑุจุน ู ุตุทูุญุงุช ูุฑูุจูู ู ู ุจุนุถ ูู ุฅู ูููู ูููู ุนูุงูุฉ ุจุชุฃู ูู ุงูู data. ุจุณ ุงูุญูููุฉ ุฅู ูู ูุงุญุฏ ูููู ููู ูุฏู ู ุฎุชูู ุชู ุงู ูุง ูุทุฑููุฉ ุงุณุชุฎุฏุงู ู ุฎุชููุฉุ ููู ุฎูุทุช ุจูููู ุฃู ุงุณุชุนู ูุช ุญุงุฌุฉ ู ูุงู ุงูุชุงููุฉ ูุชุนู ู ู ุดููุฉ ูุจูุฑุฉ ูู ุงูุณูุณุชู ุจุชุงุนู.
ุชุฎูู ู ุนุงูุง ุฅูู ุจุชุนู ู ู ูุตุฉ ูููุง ู ุณุชุฎุฏู ูู ุจูุณุฌููุง ุจุงูุฅูู ูู ูุงูุจุงุณูุฑุฏ. ุทุจูุนู ุฅูู ูุงุฒู ุชุฎุฒู ุงูุจุงุณูุฑุฏ ุจุดูู ุขู ูุ ุตุญุ ููุง ุจูู ุงูุณุคุงู:
- ูู ุฃุฎุฒู ุงูุจุงุณูุฑุฏ ุฒู ู ุง ูู plain textุ
- ุทุจ ูู ุฃุนู ูู Encryptionุ
- ููุง Hashing ููุงูุฉุ
- ุทุจ ุฅูู ูุงุฒู ุฉ ุงูู Saltุ ูุฅูู ุงููุฑู ุจูููุง ูุจูู ุงูู Pepperุ
โโโ
๐ข ุงูู Hashing
ุงูู Hashing ูู ุฅูู ุจุชุญูู ุงูู data (ุฒู ุงูุจุงุณูุฑุฏ) ูุณูุณูุฉ ู ู ุงูุฃุฑูุงู ูุงูุญุฑูู ู ููุงุด ู ุนูู.
ุงูู ูุฒุฉ ุงูุฃุณุงุณูุฉ: ุฏู one-wayุ ูุนูู ุชูุฏุฑ ุชุญูู ุงูุจุงุณูุฑุฏ ูู hashุ ููู ู ุณุชุญูู ุชุฑุฌุน ู ู ุงูู hash ููุจุงุณูุฑุฏ.
๐ ุงููุฏู: ุชุณุชุฎุฏู ู ุนุดุงู ุชุชุญูู ู ู ุงูุจูุงูุงุชุ ู ุด ุนุดุงู ุชุณุชุฑุฌุนูุง.
ู ุซุงู: ุงูู ุณุชุฎุฏู ูุฏุฎู ุงูุจุงุณูุฑุฏุ ูุฃูุช ุชุนู ูู hash ุจููุณ ุงูู algorithm ูุชูุงุฑู ู ุน ุงููู ู ุฎุฒูู.
โ ุงูู ุดููุฉ: ูู ุงุชููู ู ุณุชุฎุฏู ูู ุนูุฏูู ููุณ ุงูุจุงุณูุฑุฏุ ุงูู hash ุจุชุงุนูู ููุจูู ููุณ ุงููุชูุฌุฉ. ูุฏู ุจูุฎูู ุงูู ูุถูุน ุนุฑุถุฉ ููุฌู ุงุช ุฒู ุงูู Rainbow Tables.
โโโ
๐ต ุงูู Encryption
ุงูู Encryption ู ุฎุชูู ุชู ุงู ูุง. ููุง ุจุชุนู ู ุนู ููุฉ reversible (ูุนูู ูููุน ุชุฑุฌุน ููุจูุงูุงุช ุงูุฃุตููุฉ).
ุชุฎุฒู ุงูู data ู ุดูุฑุฉุ ูุชูุฏุฑ ุชูููุง ุจุงูู key.
๐ ุงููุฏู: ุญู ุงูุฉ ุงูุจูุงูุงุช ุงููู ูุงุฒู ุชุณุชุฑุฌุนูุง ุฒู ุงูุฑุณุงุฆูุ ุงูู ููุงุชุ ุจูุงูุงุช ุงููุฑูุฏุช ูุงุฑุฏโฆ ุฅูุฎ.
ู ุซุงู: ุชุดููุฑ ุฑุณุงูุฉ ูู ูุงุชุณุงุจุ ุงูู ุณุชูุจู ููุฏุฑ ููููุง ุจุงูู key ูุงูุฑุณุงูุฉ ุงูุฃุตููุฉ ุชุฑุฌุน.
โ ุงูู ุดููุฉ: ูู ุงูู key ุงุชุณุฑุจุ ูู ุญุงุฌุฉ ู ูุดููุฉ.
โโโ
๐ก ุงูู Salting
ุงูู Salt ูู string ุนุดูุงุฆู ุจุชุถููู ููุจุงุณูุฑุฏ ูุจู ู ุง ุชุนู ูู hash.
ูููุ ุนุดุงู ุชู ูุน ุงููุฌู ุงุช ุงููู ุจุชุนุชู ุฏ ุนูู ุฅู ููุณ ุงูุจุงุณูุฑุฏ ุนูุฏู ููุณ ุงูู hash.
๐ ุงููุฏู: ุชุนู ู ูู hash ู ุฎุชูู ุญุชู ูู ููู ุงุช ุงูุณุฑ ู ุชุดุงุจูุฉ.
ู ุซุงู:
- ู ุณุชุฎุฏู 1 = "123456" + SaltA โ hash1
- ู ุณุชุฎุฏู 2 = "123456" + SaltB โ hash2
ุฑุบู ุฅู ุงูุจุงุณูุฑุฏ ูู ููุณูุ ููู ุงูู hash ู ุฎุชูู.
โโโ
๐ด ุงูู Pepper
ุงูู Pepper ุดุจู ุงูู Salt ููู ูู ููุทุฉ ู ุฎุชููุฉ: ุจูููู secret value ุจุชุถููู ููุจุงุณูุฑุฏ ูุจู ุงูู hashing.
ุจุนูุณ ุงูู Salt ุงููู ู ู ูู ูุชุฎุฒู ู ุน ุงูู hashุ ุงูู Pepper ู ุด ุจูุชุฎุฒู ูู ุงูุฏุงุชุงุจูุฒุ ุจูุชุฎุฒู ูู config ุขู ู ุฃู environment variable.
๐ ุงููุฏู: ุชุถูู ุทุจูุฉ ุญู ุงูุฉ ุฅุถุงููุฉ ุถุฏ ุฃู ุญุฏ ูุณุฑู ุงูุฏุงุชุงุจูุฒ. ุญุชู ูู ู ุนุงู ุงูู hashes + saltsุ ูุณู ูุงูุตู ุงูู pepper.
โโโ
ููู ุงุช ุงูุณุฑ ูุงุฒู ุชุชุญูุธ ุจุงูู Hashing + Salt + Pepperุ ู ุด ุจุงูู Encryption.
ุงูู Encryption ู ูุงูู ูู ุงูุจูุงูุงุช ุงููู ูุงุฒู ุชุณุชุฑุฌุนูุง ุฒู ุงูุฑุณุงุฆู ุฃู ุงูู ููุงุช.
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
โค12๐ฅ5
ุฏุฑุฏุดุฉ ุณุฑูุนุฉ ุนู ุงูู OAuth 2.0 ๐ก
.
.
ุชุฎูู ุฅูู ุฏุงุฎู ุชุณุฌูู ูู ุชุทุจูู ุฌุฏูุฏ ุนูุดุงู ุชุชุงุจุน ููุฑุณุงุชุ ููู ุง ุฌูุช ุชุณุฌููุ ุงูุชุทุจูู ูุงูู:
"ุชูุฏุฑ ุชุณุฌูู ุจุญุณุงุจ Google ุฃู GitHub ุจุฏู ู ุง ุชุนู ู ุฃูููุช ุฌุฏูุฏ"
ุถุบุทุช ุนูู ุฒุฑุงุฑ "Continue with Google"ุ ูGoogle ุทูุจุช ู ูู ุชุฎุชุงุฑ ุงูุฅูู ูู ูุชูุงูู ุนูู ุดููุฉ ุตูุงุญูุงุช.
ุจุนุฏูุง ุงูุชุทุจูู ูุชุญ ูุงุดุชุบู ููุฃูู ุนู ูุช sign up ูุนููุง...
ุฅูู ุงููู ุญุตู ููุงุ ๐ค
ุงููู ุญุตู ุจุงูุถุจุท ูู ุฅู Google ุงุณุชุฎุฏู ุช ุญุงุฌุฉ ุงุณู ูุง OAuth 2.0.
โโโ
ุจุจุณุงุทุฉุ ุงูู OAuth 2.0 ูู ุจุฑูุชูููู authorization (ู ุด authentication)ุ ุจูุฎููู ุงูุชุทุจููุงุช ุชูุฏุฑ ุชุงุฎุฏ ุฅุฐู ู ู ุงูู ุณุชุฎุฏู ุนุดุงู ุชุฏุฎู ุนูู ุฌุฒุก ู ู ู ุนููู ุงุชู ูู service ุชุงููุฉ (ุฒู Google, Facebook, GitHub) ู ู ุบูุฑ ู ุง ูุนุฑููุง ุงูุจุงุณูุฑุฏ ุจุชุงุนุชู.
ูุนูู ุงูุชุทุจูู ุงููู ุจุชุณุชุฎุฏู ู ู ุด ุจูุดูู ุงูุจุงุณูุฑุฏ ุจุชุงุนุชูุ ุจุณ ุจูุงุฎุฏ ุชููู ู ุคูุช ููุฏุฑ ูุณุชุฎุฏู ู ูุฏุฎู ุนูู ุงูู APIs ุงููู ุฃูุช ูุงููุช ุนูููุง.
ูุฏู ุจูุฎูู ุงูุนู ููุฉ ุขู ูุฉุ ูุจูุญุงูุธ ุนูู ุงูุฎุตูุตูุฉ ุจุชุงุนุชู.
โโโ
ุชุนุงู ูู ุดู ุฎุทูุฉ ุจุฎุทูุฉ ูู ุงูู flow ุงูู ุดููุฑ ุจุชุงุน Authorization Code Grant Flowุ ูุงููู ุจูุณุชุฎุฏู ูู web apps
1- ุงูู User Requests Login
ุงูุชุทุจูู (Client) ููููู: "ุณุฌูู ุจุญุณุงุจ Google ู ุซููุง"ุ ูุงูู ุณุชุฎุฏู ูุถุบุท ุนูู ุงูุฒุฑุงุฑุ ููุชู ุชูุฌููู ุนูู authorization server (ุฒู Google).
2- ุงูู User Grants Permission
ุฌูุฌู ูุทูุจ ู ูู ุชุณุฌูู ุฏุฎูู ูุชูุงูู ุนูู ุงูู permissions ุงููู ุงูุชุทุจูู ุทุงูุจูุง (ุฒู ุงูุฅูู ููุ ุงูุงุณู ุ ุฅูุฎ).
3- ุงูู Authorization Code
ูู ูุงููุชุ Google ููุจุนุช authorization code ููุชุทุจูู (ุฃู ุชุญุฏูุฏูุง ููู redirect URL ุงููู ุงูุชุทุจูู ุญุฏุฏู ูุจู ูุฏู).
4- ุงูู Token Exchange
ุงูุชุทุจูู ูุงุฎุฏ ุงูู authorization code ุฏู ููุจุนุช request ูู token endpoint ุนูุดุงู ูุจุฏูู ุจู access token (ูุณุงุนุงุช ูู ุงู refresh token).
5- ุงูู Access Protected APIs
ุจู ุฌุฑุฏ ู ุง ุงูุชุทุจูู ูุงุฎุฏ ุงูู access tokenุ ููุฏุฑ ูุณุชุฎุฏู ู ูุทูุจ ุจูุงูุงุช ู ู Google APIsุ ุจุณ ูู ุญุฏูุฏ ุงูู scope ุงููู ูุงููุช ุนููู.
โโโ
ูู ุนูุฏู API ูุนุงูุฒ ุชุฃู ููุงุ ู ู ูู ุชุณุชุฎุฏู OAuth 2.0 ุจุญูุซ:
- ุฃู Client ู ุด ูููุฏุฑ ููุตู ูู API ุบูุฑ ูู ุง ููุฏูู Access Token ุตุงูุญ.
- ุงูู Backend ุจุชุงุนู ููุฏุฑ ูุชุญููู ู ู ุงูุชููู (ู ุซููุง JWT ุฃู ุนู ุทุฑูู introspection endpoint).
- ุชูุฏุฑ ุชุชุญููู ูู ุงูุตูุงุญูุงุช ุนู ุทุฑูู ุงูู scope (ูุนูู ู ุซููุง ุชููู ู ุนูู ููุฏุฑ ููุฑุฃ ุจุณุ ูุชููู ุชุงูู ููุฏุฑ ููุชุจ ููุนุฏูู).
- ุชูุฏุฑ ุชุณุญุจ ุตูุงุญูุงุช ุงูุชููู ูู ุฃู ููุช (Revoke).
ุจุงูุชุงููุ OAuth 2.0 ุจูุฃู ูู ุงูู APIs ุนู ุทุฑูู ุฅูู:
โ ุจูููู ุงูุงุนุชู ุงุฏ ุนูู ููู ุงุช ุงูู ุฑูุฑ
โ ุจูุณู ุญ ุจุงูู delegation (ุชุทุจูู ูุงุฎุฏ ุฅุฐู ู ู ู ุณุชุฎุฏู ููุตู ูุญุงุฌุฉ ู ุด ุจุชุงุนุชู)
โ ุจูุฎูู ุงูู tokens ู ุคูุชุฉุ ูู ู ูู ุชุชุญูู ูู ุตูุงุญูุงุชูุง ูู ุฏูุชูุง
โโโ
- ุงูู Authorization Code (with PKCE): ููู ูุจุงูู ูุงูููุจ.
- ุงูู Client Credentials: ููู machine-to-machine apps.
- ุงูู Password (deprecated): ูุงู ุจูุณุชุฎุฏู ูู ุง ุงูู ุณุชุฎุฏู ููุชุจ ุงูู username ูุงูุจุงุณูุฑุฏ ูู ููุณ ุงูุชุทุจูู (ุบูุฑ ุขู ู).
- ุงูู Implicit (deprecated): ุฒู ุงู ูุงู ุจูุชุณุชุฎุฏู ููู SPA apps ูููู ุบูุฑ ู ูุตู ุจู.
โโโ
ูู ููุช ุจุชุณุชุฎุฏู OAuth 2.0 ูู ู ูุจุงูู ุฃู SPA appุ ูุงุฒู ุชุณุชุฎุฏู ุญุงุฌุฉ ุงุณู ูุง PKCE (Proof Key for Code Exchange) ุนูุดุงู ุชู ูุน ุงูู authorization code ู ู ุฅูู ูุชุณุฑู.
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
.
.
ุชุฎูู ุฅูู ุฏุงุฎู ุชุณุฌูู ูู ุชุทุจูู ุฌุฏูุฏ ุนูุดุงู ุชุชุงุจุน ููุฑุณุงุชุ ููู ุง ุฌูุช ุชุณุฌููุ ุงูุชุทุจูู ูุงูู:
"ุชูุฏุฑ ุชุณุฌูู ุจุญุณุงุจ Google ุฃู GitHub ุจุฏู ู ุง ุชุนู ู ุฃูููุช ุฌุฏูุฏ"
ุถุบุทุช ุนูู ุฒุฑุงุฑ "Continue with Google"ุ ูGoogle ุทูุจุช ู ูู ุชุฎุชุงุฑ ุงูุฅูู ูู ูุชูุงูู ุนูู ุดููุฉ ุตูุงุญูุงุช.
ุจุนุฏูุง ุงูุชุทุจูู ูุชุญ ูุงุดุชุบู ููุฃูู ุนู ูุช sign up ูุนููุง...
ุฅูู ุงููู ุญุตู ููุงุ ๐ค
ุงููู ุญุตู ุจุงูุถุจุท ูู ุฅู Google ุงุณุชุฎุฏู ุช ุญุงุฌุฉ ุงุณู ูุง OAuth 2.0.
โโโ
๐ ูุนูู ุฅูู OAuth 2.0ุ
ุจุจุณุงุทุฉุ ุงูู OAuth 2.0 ูู ุจุฑูุชูููู authorization (ู ุด authentication)ุ ุจูุฎููู ุงูุชุทุจููุงุช ุชูุฏุฑ ุชุงุฎุฏ ุฅุฐู ู ู ุงูู ุณุชุฎุฏู ุนุดุงู ุชุฏุฎู ุนูู ุฌุฒุก ู ู ู ุนููู ุงุชู ูู service ุชุงููุฉ (ุฒู Google, Facebook, GitHub) ู ู ุบูุฑ ู ุง ูุนุฑููุง ุงูุจุงุณูุฑุฏ ุจุชุงุนุชู.
ูุนูู ุงูุชุทุจูู ุงููู ุจุชุณุชุฎุฏู ู ู ุด ุจูุดูู ุงูุจุงุณูุฑุฏ ุจุชุงุนุชูุ ุจุณ ุจูุงุฎุฏ ุชููู ู ุคูุช ููุฏุฑ ูุณุชุฎุฏู ู ูุฏุฎู ุนูู ุงูู APIs ุงููู ุฃูุช ูุงููุช ุนูููุง.
ูุฏู ุจูุฎูู ุงูุนู ููุฉ ุขู ูุฉุ ูุจูุญุงูุธ ุนูู ุงูุฎุตูุตูุฉ ุจุชุงุนุชู.
โโโ
๐ ุฅุฒุงู ุงูู OAuth 2.0 ุจูุดุชุบูุ
ุชุนุงู ูู ุดู ุฎุทูุฉ ุจุฎุทูุฉ ูู ุงูู flow ุงูู ุดููุฑ ุจุชุงุน Authorization Code Grant Flowุ ูุงููู ุจูุณุชุฎุฏู ูู web apps
1- ุงูู User Requests Login
ุงูุชุทุจูู (Client) ููููู: "ุณุฌูู ุจุญุณุงุจ Google ู ุซููุง"ุ ูุงูู ุณุชุฎุฏู ูุถุบุท ุนูู ุงูุฒุฑุงุฑุ ููุชู ุชูุฌููู ุนูู authorization server (ุฒู Google).
2- ุงูู User Grants Permission
ุฌูุฌู ูุทูุจ ู ูู ุชุณุฌูู ุฏุฎูู ูุชูุงูู ุนูู ุงูู permissions ุงููู ุงูุชุทุจูู ุทุงูุจูุง (ุฒู ุงูุฅูู ููุ ุงูุงุณู ุ ุฅูุฎ).
3- ุงูู Authorization Code
ูู ูุงููุชุ Google ููุจุนุช authorization code ููุชุทุจูู (ุฃู ุชุญุฏูุฏูุง ููู redirect URL ุงููู ุงูุชุทุจูู ุญุฏุฏู ูุจู ูุฏู).
4- ุงูู Token Exchange
ุงูุชุทุจูู ูุงุฎุฏ ุงูู authorization code ุฏู ููุจุนุช request ูู token endpoint ุนูุดุงู ูุจุฏูู ุจู access token (ูุณุงุนุงุช ูู ุงู refresh token).
5- ุงูู Access Protected APIs
ุจู ุฌุฑุฏ ู ุง ุงูุชุทุจูู ูุงุฎุฏ ุงูู access tokenุ ููุฏุฑ ูุณุชุฎุฏู ู ูุทูุจ ุจูุงูุงุช ู ู Google APIsุ ุจุณ ูู ุญุฏูุฏ ุงูู scope ุงููู ูุงููุช ุนููู.
โโโ
ุฅุฒุงู ุจูุฃู ู ุงูู APIsุ ๐
ูู ุนูุฏู API ูุนุงูุฒ ุชุฃู ููุงุ ู ู ูู ุชุณุชุฎุฏู OAuth 2.0 ุจุญูุซ:
- ุฃู Client ู ุด ูููุฏุฑ ููุตู ูู API ุบูุฑ ูู ุง ููุฏูู Access Token ุตุงูุญ.
- ุงูู Backend ุจุชุงุนู ููุฏุฑ ูุชุญููู ู ู ุงูุชููู (ู ุซููุง JWT ุฃู ุนู ุทุฑูู introspection endpoint).
- ุชูุฏุฑ ุชุชุญููู ูู ุงูุตูุงุญูุงุช ุนู ุทุฑูู ุงูู scope (ูุนูู ู ุซููุง ุชููู ู ุนูู ููุฏุฑ ููุฑุฃ ุจุณุ ูุชููู ุชุงูู ููุฏุฑ ููุชุจ ููุนุฏูู).
- ุชูุฏุฑ ุชุณุญุจ ุตูุงุญูุงุช ุงูุชููู ูู ุฃู ููุช (Revoke).
ุจุงูุชุงููุ OAuth 2.0 ุจูุฃู ูู ุงูู APIs ุนู ุทุฑูู ุฅูู:
โ ุจูููู ุงูุงุนุชู ุงุฏ ุนูู ููู ุงุช ุงูู ุฑูุฑ
โ ุจูุณู ุญ ุจุงูู delegation (ุชุทุจูู ูุงุฎุฏ ุฅุฐู ู ู ู ุณุชุฎุฏู ููุตู ูุญุงุฌุฉ ู ุด ุจุชุงุนุชู)
โ ุจูุฎูู ุงูู tokens ู ุคูุชุฉุ ูู ู ูู ุชุชุญูู ูู ุตูุงุญูุงุชูุง ูู ุฏูุชูุง
โโโ
๐ ุฃููุงุน ุงููGrant Types ุงูู ุดููุฑุฉ:
- ุงูู Authorization Code (with PKCE): ููู ูุจุงูู ูุงูููุจ.
- ุงูู Client Credentials: ููู machine-to-machine apps.
- ุงูู Password (deprecated): ูุงู ุจูุณุชุฎุฏู ูู ุง ุงูู ุณุชุฎุฏู ููุชุจ ุงูู username ูุงูุจุงุณูุฑุฏ ูู ููุณ ุงูุชุทุจูู (ุบูุฑ ุขู ู).
- ุงูู Implicit (deprecated): ุฒู ุงู ูุงู ุจูุชุณุชุฎุฏู ููู SPA apps ูููู ุบูุฑ ู ูุตู ุจู.
โโโ
ูู ููุช ุจุชุณุชุฎุฏู OAuth 2.0 ูู ู ูุจุงูู ุฃู SPA appุ ูุงุฒู ุชุณุชุฎุฏู ุญุงุฌุฉ ุงุณู ูุง PKCE (Proof Key for Code Exchange) ุนูุดุงู ุชู ูุน ุงูู authorization code ู ู ุฅูู ูุชุณุฑู.
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
โค11
Master Async Iterators โ
Make your JavaScript apps faster and smarter with async iterators.
Stream data efficiently, handle errors gracefully, and keep performance top-notch
โค5
ุฏุฑุฏุดุฉ ุณุฑูุนุฉ ุนู ุงูู RFC ๐ก
.
.
ูู ุฃููุงุช ูุชูุฑ ุจูููู ุนูุฏู ููุฑุฉ ุญููุฉ โ ู ู ูู ุชููู ุชุญุณูู ูู ุงูุฃุฏุงุกุ refactorุ ุฃู feature ุฌุฏูุฏุฉ โ
ุจุณ ุฃูู ู ุง ุชุญุงูู ุชุดุฑุญูุง ููุชูู ุ ุงูุญูุงุฑ ุจูุจูู ุนุดูุงุฆูุ ูุงููุงุณ ุจุชููู ูุต ุงูููุฑุฉ ุฃู ุชุฑูุถูุง ูุจู ู ุง ุชุณุชูุนุจูุง ุฃุตููุง...
ุนูุดุงู ูุฏู ุงูุชูู ุงุช ูู ุงูุดุฑูุงุช ุงููุจูุฑุฉ ูุงูู ุชูุณุทุฉ ุจุชุณุชุฎุฏู ุญุงุฌุฉ ุงุณู ูุง RFC โ Request For Commentsุ
ูุฏู ุจุจุณุงุทุฉ ุทุฑููุฉ ู ูุธู ุฉ ุจุชุฎููู ุชุดุฑุญ ููุฑุชู ุจุงูุชูุตููุ ูุชุฎูู ุงููู ูุดุงุฑู ุฑุฃูู ูุจู ุงูุชูููุฐ.
โโโ
๐ ูุนูู ุฅูู RFCุ
ุงูู RFC ุนุจุงุฑุฉ ุนู ู ุณุชูุฏ ู ูุชูุจ ุจูุดุฑุญ ููู ุตุงุญุจ ุงูููุฑุฉ ูู ุญุงุฌุฉ ุนู ุงูู feature ุฃู ุงูุชุบููุฑ ุงููู ุนุงูุฒ ูุนู ูู:
ู ู ุงูู contextุ ูุงูู problem ุงููู ุจูุญุงูู ูุญููุงุ ูุญุฏ ุงูู proposed solutionุ ูุงูู alternativesุ ูุงูู trade-offs.
ุงููุฏู ุฅูู ุชุดุงุฑู ุงูุชูููุฑ ุจุชุงุนู ู ุน ุงูุชูู ุนูุดุงู ุงููู ููุฏุฑ ููุงูุด ุงูููุฑุฉ ู ู ูุฌูุงุช ูุธุฑ ู ุฎุชููุฉ โ ููุฏุณูุฉุ productุ ุฃู ุญุชู business.
โโโ
๐ฏ ููู ู ูู ููุชุจ RFCุ
ููู 3 ุฃุณุจุงุจ ุฑุฆูุณูุฉ ุจุชุฎูู ุงูู RFCs ู ูู ุฉ ุฌุฏูุง ูู ุฃู ุชูู :
1- ุจุชู ูุน ุงููุฑุงุฑุงุช ุงููุฑุฏูุฉ ุงูุนุดูุงุฆูุฉ:
ุจุฏู ู ุง ุฃู ุญุฏ ูุบููุฑ ูู ุงูู codebase ุฃู ุงูู system architecture ุจู ุฒุงุฌูุ ุงูู RFC ุจุชุฎูู ุงููุฑุงุฑ ุฌู ุงุนู ูู ุฏุฑูุณ.
2- ุจุชูุซูู ุงููุฑุงุฑุงุช ุงูุชูููุฉ:
ุจุนุฏ 6 ุดููุฑ ูู ุง ุญุฏ ูุณุฃู โููู ุงุฎุชุฑูุง ูุณุชุฎุฏู Redis ููุงุโุ ุชูุฏุฑ ุชุฑุฌุน ูู RFC ูุชุดูู reasoning ูุงุถุญ ุจุฏู ู ุง ุชุนุชู ุฏ ุนูู ุงูุฐุงูุฑุฉ.
3- ุจุชุญุณูู ุงูุชุนุงูู ุจูู ุงููุฑู:
ุงูู frontendุ backendุ DevOps... ุงููู ุจูุจูู ุนุงุฑู ุงูุงุชุฌุงู ุงูุนุงู ููู system ูุจูุดุงุฑู ูู ุงููุฑุงุฑ.
โโโ
ุฅุฒุงู ุชูุชุจ RFC ู ุญุชุฑู ุ ๐ค
ุงูู structure ู ุด ุซุงุจุชุ ุจุณ ููู ููุฑู ุงุช ู ุชุนุงุฑู ุนููู ูุจูุฎูู ุงูู RFC ูุงุถุญ ูู ูุทูู.
๐ ุงูู Title + Summary
ุงุจุฏุฃ ุจุนููุงู ุจุณูุท ููุงุถุญ ูุดุฑุญ ูุฏู ุงูู RFC.
ู ุซููุง:
ูุจุนุฏูุง ุงุนู ู Summary ุตุบูุฑ ุจูุดุฑุญ ูู ุฌู ูุฉ ุฃู ุงุชููู ุงูููุฑุฉ ุงูุนุงู ุฉ:
๐ ุงูู Context / Background
ุงุญูู ุจุงุฎุชุตุงุฑ ุงูู situation ุงูุญุงูู ูููู ู ุญุชุงุฌูู ุงูุชุบููุฑ.
ู ุซููุง:
ุงูููุฑุฉ ุฅูู ุชุฏู ุงููุงุฑุฆ ุตูุฑุฉ ูุงู ูุฉ ุนู ุงูู ุดููุฉ ูุจู ู ุง ูุฏุฎู ูู ุงูุญู.
๐ ุงูู Problem Statement
ูุถุญ ุงูู ุดููุฉ ุงูุฃุณุงุณูุฉ ุงููู ุจุชุญุงูู ุชุญููุง ุจุงูุฃุฑูุงู ูู ุฃู ูู.
ู ุซููุง:
ุฏู ุจุชุฎูู ุงูู RFC ู ูุทูู ูู ุจูู ุนูู data.
๐ ุงูู Proposed Solution
ุงุดุฑุญ ุงูู approach ุงููู ูุงูู ุชุณุชุฎุฏู ูุ ููู ุงุฎุชุฑุชูุ ูุฅุฒุงู ููุดุชุบู.
ู ุซููุง:
ู ู ูู ูู ุงู ุชุถูู diagram ุจุณูุท ุฃู pseudo code ูู ู ุญุชุงุฌ ุชูุถุญ flow ู ุนูู.
๐ ุงูู Alternatives Considered
ุจููุถุญ ุฅูู ู ุด ุงุฎุชุฑุช ุงูุญู ุนุดูุงุฆู.
ู ุซููุง:
๐ ุงูู Trade-offs
ููู ุจุตุฑุงุญุฉ ุฅูู ุงูุนููุจ ุงููู ู ู ูู ุชุญุตู.
๐ ุงูู Impact / Risks
ููู ุฅูู ุงููู ู ู ูู ูุชุฃุซุฑ ูู ุงูู system.
๐ ุงูู Open Questions
ู ู ูู ุชุณูุจ ูู ุงูุขุฎุฑ ุดููุฉ ุฃุณุฆูุฉ ู ูุชูุญุฉ ุนูุดุงู ุงูุชูู ููุงูุดูุง:
๐ ุงูู Next Steps
ุงุฎุชุตุฑ ุฅูู ุงููู ููุญุตู ุจุนุฏ ุงูู ูุงููุฉ.
โโโ
๐ก ูุตุงุฆุญ ู ูู ุฉ ูุฃูุช ุจุชูุชุจ RFC:
- ุฎููู ูุงุถุญ ูุจุณูุทุ ุจูุงุด ู ุตุทูุญุงุช ุชูููุฉ ู ู ุบูุฑ ุฏุงุนู.
- ุงุณุชุฎุฏู bullet points ุนูุดุงู ุงููุงุณ ุชูุฑุฃ ุจุณูููุฉ.
- ูู ููู diagrams ุฃู code snippetsุ ุถูููู ุนูุดุงู ุชุณูู ุงูููู .
- ุฎููู ู ุฑู ูู ุงูููุงุด... ุงููุฏู ู ุด ุฅู ููุฑุชู ุชุชููุฐุ ุงููุฏู ุฅู ูุฎุชุงุฑ ุฃูุถู ุญู.
โโโ
ู ุด ู ูู ุชูุชุจ RFC ู ุซุงููุฉ ู ู ุฃูู ู ุฑุฉุ ุงูู ูู ุฅูู ุชุจุฏุฃุ ูู ุน ุงูููุช ูุชุชุนูู ุฅุฒุงู ุชูุตู ููุฑุชู ุจุฃูุถุญ ูุฃููู ุทุฑููุฉ ู ู ููุฉ ๐ฅ
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
.
.
ูู ุฃููุงุช ูุชูุฑ ุจูููู ุนูุฏู ููุฑุฉ ุญููุฉ โ ู ู ูู ุชููู ุชุญุณูู ูู ุงูุฃุฏุงุกุ refactorุ ุฃู feature ุฌุฏูุฏุฉ โ
ุจุณ ุฃูู ู ุง ุชุญุงูู ุชุดุฑุญูุง ููุชูู ุ ุงูุญูุงุฑ ุจูุจูู ุนุดูุงุฆูุ ูุงููุงุณ ุจุชููู ูุต ุงูููุฑุฉ ุฃู ุชุฑูุถูุง ูุจู ู ุง ุชุณุชูุนุจูุง ุฃุตููุง...
ุนูุดุงู ูุฏู ุงูุชูู ุงุช ูู ุงูุดุฑูุงุช ุงููุจูุฑุฉ ูุงูู ุชูุณุทุฉ ุจุชุณุชุฎุฏู ุญุงุฌุฉ ุงุณู ูุง RFC โ Request For Commentsุ
ูุฏู ุจุจุณุงุทุฉ ุทุฑููุฉ ู ูุธู ุฉ ุจุชุฎููู ุชุดุฑุญ ููุฑุชู ุจุงูุชูุตููุ ูุชุฎูู ุงููู ูุดุงุฑู ุฑุฃูู ูุจู ุงูุชูููุฐ.
โโโ
๐ ูุนูู ุฅูู RFCุ
ุงูู RFC ุนุจุงุฑุฉ ุนู ู ุณุชูุฏ ู ูุชูุจ ุจูุดุฑุญ ููู ุตุงุญุจ ุงูููุฑุฉ ูู ุญุงุฌุฉ ุนู ุงูู feature ุฃู ุงูุชุบููุฑ ุงููู ุนุงูุฒ ูุนู ูู:
ู ู ุงูู contextุ ูุงูู problem ุงููู ุจูุญุงูู ูุญููุงุ ูุญุฏ ุงูู proposed solutionุ ูุงูู alternativesุ ูุงูู trade-offs.
ุงููุฏู ุฅูู ุชุดุงุฑู ุงูุชูููุฑ ุจุชุงุนู ู ุน ุงูุชูู ุนูุดุงู ุงููู ููุฏุฑ ููุงูุด ุงูููุฑุฉ ู ู ูุฌูุงุช ูุธุฑ ู ุฎุชููุฉ โ ููุฏุณูุฉุ productุ ุฃู ุญุชู business.
โโโ
๐ฏ ููู ู ูู ููุชุจ RFCุ
ููู 3 ุฃุณุจุงุจ ุฑุฆูุณูุฉ ุจุชุฎูู ุงูู RFCs ู ูู ุฉ ุฌุฏูุง ูู ุฃู ุชูู :
1- ุจุชู ูุน ุงููุฑุงุฑุงุช ุงููุฑุฏูุฉ ุงูุนุดูุงุฆูุฉ:
ุจุฏู ู ุง ุฃู ุญุฏ ูุบููุฑ ูู ุงูู codebase ุฃู ุงูู system architecture ุจู ุฒุงุฌูุ ุงูู RFC ุจุชุฎูู ุงููุฑุงุฑ ุฌู ุงุนู ูู ุฏุฑูุณ.
2- ุจุชูุซูู ุงููุฑุงุฑุงุช ุงูุชูููุฉ:
ุจุนุฏ 6 ุดููุฑ ูู ุง ุญุฏ ูุณุฃู โููู ุงุฎุชุฑูุง ูุณุชุฎุฏู Redis ููุงุโุ ุชูุฏุฑ ุชุฑุฌุน ูู RFC ูุชุดูู reasoning ูุงุถุญ ุจุฏู ู ุง ุชุนุชู ุฏ ุนูู ุงูุฐุงูุฑุฉ.
3- ุจุชุญุณูู ุงูุชุนุงูู ุจูู ุงููุฑู:
ุงูู frontendุ backendุ DevOps... ุงููู ุจูุจูู ุนุงุฑู ุงูุงุชุฌุงู ุงูุนุงู ููู system ูุจูุดุงุฑู ูู ุงููุฑุงุฑ.
โโโ
ุฅุฒุงู ุชูุชุจ RFC ู ุญุชุฑู ุ ๐ค
ุงูู structure ู ุด ุซุงุจุชุ ุจุณ ููู ููุฑู ุงุช ู ุชุนุงุฑู ุนููู ูุจูุฎูู ุงูู RFC ูุงุถุญ ูู ูุทูู.
๐ ุงูู Title + Summary
ุงุจุฏุฃ ุจุนููุงู ุจุณูุท ููุงุถุญ ูุดุฑุญ ูุฏู ุงูู RFC.
ู ุซููุง:
RFC: Introduce caching layer for product API
ูุจุนุฏูุง ุงุนู ู Summary ุตุบูุฑ ุจูุดุฑุญ ูู ุฌู ูุฉ ุฃู ุงุชููู ุงูููุฑุฉ ุงูุนุงู ุฉ:
We propose adding a Redis-based caching layer to reduce response time for frequently accessed endpoints.
๐ ุงูู Context / Background
ุงุญูู ุจุงุฎุชุตุงุฑ ุงูู situation ุงูุญุงูู ูููู ู ุญุชุงุฌูู ุงูุชุบููุฑ.
ู ุซููุง:
Currently, our product endpoints are hitting the database directly, leading to high latency during peak hours.
ุงูููุฑุฉ ุฅูู ุชุฏู ุงููุงุฑุฆ ุตูุฑุฉ ูุงู ูุฉ ุนู ุงูู ุดููุฉ ูุจู ู ุง ูุฏุฎู ูู ุงูุญู.
๐ ุงูู Problem Statement
ูุถุญ ุงูู ุดููุฉ ุงูุฃุณุงุณูุฉ ุงููู ุจุชุญุงูู ุชุญููุง ุจุงูุฃุฑูุงู ูู ุฃู ูู.
ู ุซููุง:
Average response time increased from 300ms to 900ms under load.
ุฏู ุจุชุฎูู ุงูู RFC ู ูุทูู ูู ุจูู ุนูู data.
๐ ุงูู Proposed Solution
ุงุดุฑุญ ุงูู approach ุงููู ูุงูู ุชุณุชุฎุฏู ูุ ููู ุงุฎุชุฑุชูุ ูุฅุฒุงู ููุดุชุบู.
ู ุซููุง:
We'll use Redis to cache product data for 5 minutes. The cache will be invalidated on product update events.
ู ู ูู ูู ุงู ุชุถูู diagram ุจุณูุท ุฃู pseudo code ูู ู ุญุชุงุฌ ุชูุถุญ flow ู ุนูู.
๐ ุงูู Alternatives Considered
ุจููุถุญ ุฅูู ู ุด ุงุฎุชุฑุช ุงูุญู ุนุดูุงุฆู.
ู ุซููุง:
Considered using in-memory cache, but it doesnโt scale horizontally. Redis fits better for distributed systems.
๐ ุงูู Trade-offs
ููู ุจุตุฑุงุญุฉ ุฅูู ุงูุนููุจ ุงููู ู ู ูู ุชุญุตู.
Cache invalidation adds complexity and increases operational overhead.
๐ ุงูู Impact / Risks
ููู ุฅูู ุงููู ู ู ูู ูุชุฃุซุฑ ูู ุงูู system.
Adding caching could lead to stale data if invalidation fails.
๐ ุงูู Open Questions
ู ู ูู ุชุณูุจ ูู ุงูุขุฎุฑ ุดููุฉ ุฃุณุฆูุฉ ู ูุชูุญุฉ ุนูุดุงู ุงูุชูู ููุงูุดูุง:
Should we cache all products or only top 100 requested ones?
๐ ุงูู Next Steps
ุงุฎุชุตุฑ ุฅูู ุงููู ููุญุตู ุจุนุฏ ุงูู ูุงููุฉ.
If approved, implementation will start in sprint 25, and metrics will be collected after deployment.
โโโ
๐ก ูุตุงุฆุญ ู ูู ุฉ ูุฃูุช ุจุชูุชุจ RFC:
- ุฎููู ูุงุถุญ ูุจุณูุทุ ุจูุงุด ู ุตุทูุญุงุช ุชูููุฉ ู ู ุบูุฑ ุฏุงุนู.
- ุงุณุชุฎุฏู bullet points ุนูุดุงู ุงููุงุณ ุชูุฑุฃ ุจุณูููุฉ.
- ูู ููู diagrams ุฃู code snippetsุ ุถูููู ุนูุดุงู ุชุณูู ุงูููู .
- ุฎููู ู ุฑู ูู ุงูููุงุด... ุงููุฏู ู ุด ุฅู ููุฑุชู ุชุชููุฐุ ุงููุฏู ุฅู ูุฎุชุงุฑ ุฃูุถู ุญู.
โโโ
ู ุด ู ูู ุชูุชุจ RFC ู ุซุงููุฉ ู ู ุฃูู ู ุฑุฉุ ุงูู ูู ุฅูู ุชุจุฏุฃุ ูู ุน ุงูููุช ูุชุชุนูู ุฅุฒุงู ุชูุตู ููุฑุชู ุจุฃูุถุญ ูุฃููู ุทุฑููุฉ ู ู ููุฉ ๐ฅ
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
โค7
Harvard's "Advanced Algorithms"
๐ฝ Videos: https://youtube.com/playlist?list=PL2SOU6wwxB0uP4rJgf5ayhHWgw7akUWSf
๐ท Notes: https://people.seas.harvard.edu/~cs224/fall14/lec.html
โค3
๐ C# Mastery Learning Path
A comprehensive guide to mastering C#, .NET, and related technologies from beginner to advanced level.
https://github.com/Metigator
GitHub
metigator - Overview
Microsoft MVP. metigator has 122 repositories available. Follow their code on GitHub.
โค3