// docs / baas security / auth0 hardening
Auth0 security checklist: 22 আইটেম
Auth0 একটি identity-as-a-service প্ল্যাটফর্ম যার একটি বিশাল পৃষ্ঠ আছে — applications, APIs (resource servers), tenants, actions, rules (legacy), connections, এবং grants। তাদের যেকোনো একটির misconfiguration একটি auth bypass। এই checklist হল applications, callback / logout allowlists, tokens এবং refresh rotation, custom actions, RBAC, anomaly detection, এবং চলমান monitoring জুড়ে একটি 22-আইটেম audit। প্রতিটি আইটেম 10 মিনিটের কম সময়ে Auth0 Dashboard-এ verifiable।
Clerk-এ সমতুল্য checklist-এর জন্য, Clerk security checklist দেখুন। identity-layer misconfigurations কেন AI-tool blind spots তার পটভূমির জন্য, AI কোডিং টুলগুলি কেন security gaps ছেড়ে দেয় দেখুন।
Application type এবং grant types
Application type এবং enabled grant types হল Auth0-এর সবচেয়ে high-impact settings। সেগুলি ভুল করা attack-এর শ্রেণী খোলে যা কোনো পরিমাণ frontend code বন্ধ করতে পারবে না।
- browser-only অ্যাপের জন্য Application Type = Single Page Application এবং server-rendered অ্যাপের জন্য Regular Web Application ব্যবহার করুন। ভুল type ভুল grant types-এর অনুমতি দেয় — যেমন SPA grant সহ একটি Regular Web App PKCE-less Implicit flow সক্ষম করে, যা URL fragments-এর মাধ্যমে tokens leak করে।
- প্রতিটি application-এ Implicit grant type disable করুন। Dashboard → Application → Advanced Settings → Grant Types → Implicit uncheck করুন। Implicit flow URL fragments-এ tokens return করে, যেখানে সেগুলি browser history এবং analytics-এ log হয়। পরিবর্তে Authorization Code with PKCE ব্যবহার করুন।
- Documented need না থাকলে Password grant disable করুন। Resource Owner Password Credentials (ROPC) grant আপনাকে user passwords নিজে handle করতে বাধ্য করে — Auth0 যা কিনেছেন তার অধিকাংশকে পরাজিত করে। একটি legacy system integrate না করলে এটি disable করুন।
- প্রতিটি public client-এ Authorization Code with PKCE enable করুন। Dashboard → Advanced Settings → OAuth → JsonWebToken Signature Algorithm = RS256, OIDC Conformant = enabled। code interception প্রতিরোধ করতে mobile apps এবং SPAs-এর জন্য PKCE প্রয়োজন।
Callback এবং logout URL allowlists
OAuth callback path-এ Open redirects একটি token-theft primitive। Auth0-এর allowlist আপনার একমাত্র প্রতিরক্ষা।
- Allowed Callback URLs আপনার সঠিক production callback path-এ set করুন — কোনো wildcards নয়।
https://yourapp.com/callback,https://yourapp.com/*নয়। Wildcard callbacks আক্রমণকারীদের আপনার domain-এ arbitrary subpaths-এ tokens redirect করতে দেয়। - Allowed Logout URLs একটি সীমিত list-এ set করুন। একই নিয়ম: শুধুমাত্র explicit URLs। একটি open logout redirect আক্রমণকারীদের phishing pages craft করতে দেয় যা আপনার post-logout state-এর মতো দেখায়।
- Allowed Web Origins আপনার production origin-এ set করুন। Silent authentication (hidden iframe-এর মাধ্যমে token renewal)-এর জন্য ব্যবহৃত। একটি wildcard origin আক্রমণকারী pages-কে আপনার tenant-এর বিরুদ্ধে silent auth সম্পাদন করতে দেয়।
- API endpoints-এর জন্য Allowed CORS origins set করুন, application-এর জন্য নয়। Tenant Settings → Advanced → Allowed CORS origins। Default খালি (restricted); শুধুমাত্র আপনি নিয়ন্ত্রণ করেন এমন explicit origins যোগ করুন।
Tokens এবং refresh rotation
Token lifetime, refresh rotation, এবং signing algorithm যেকোনো token leak-এর blast radius নির্ধারণ করে।
- Refresh Token Rotation enable করুন। Application → Refresh Token Settings → Rotation। প্রতিটি refresh একটি নতুন refresh token issue করে এবং পুরানোটি invalidate করে। Absolute expiry-এর সাথে সংযুক্ত, এটি token theft সীমাবদ্ধ করে।
- Refresh Token Reuse Interval 0-এ set করুন (বা যতটা কম আপনার replay সহনশীলতা অনুমতি দেয়)। Reuse interval একটি token-কে একই window-এ দুবার ব্যবহার করতে দেয় — যদি না আপনার এটি রাখার একটি নির্দিষ্ট কারণ থাকে এটি বন্ধ করুন।
- Absolute Refresh Token Expiry 14-30 দিনে set করুন, অসীম নয়। Application → Refresh Token Expiration → Absolute Expiration। Auth0 default-এ Inactivity-only, যার মানে একটি idle session বছরের পর বছর persist করতে পারে।
- JWT Signature Algorithm RS256-এ set করুন। Application → Advanced → OAuth → JsonWebToken Signature Algorithm। RS256 asymmetric signing ব্যবহার করে যাতে client tokens forge করতে না পারে। Client-facing applications-এর জন্য HS256 কখনো ব্যবহার করবেন না।
- আপনার API যে প্রতিটি JWT পায় তার
audএবংissclaims যাচাই করুন। Server side-এ official Auth0 SDK ব্যবহার করুন — এটি স্বয়ংক্রিয়ভাবে এগুলি যাচাই করে। Hand-rolled JWT parsing সাধারণত audience validation skip করে, যা একটি auth bypass।
Actions এবং custom code
Auth0 Actions (এবং legacy Rules) login এবং অন্যান্য lifecycle events-এ server-side চলে। সেগুলির সম্পূর্ণ request context-এ access আছে। এখানে insecure code একটি tenant-wide vulnerability।
event.userবাevent.transactionকে একটি সম্পূর্ণ object হিসাবে কখনো log করবেন না। এগুলিতে email addresses, IP addresses, এবং অন্যান্য PII থাকে। শুধুমাত্র field-level logging ব্যবহার করুন, এবং শুধুমাত্র যা প্রয়োজন তা log করুন।- যেকোনো API key বা webhook URL-এর জন্য secrets store ব্যবহার করুন। Actions → Edit → Secrets। Action code-এ একটি string literal হিসাবে একটি API key inline করবেন না — code tenant-এ Action editor access সহ যে কারো কাছে দৃশ্যমান।
- সেগুলি user_metadata বা app_metadata হিসাবে persist করার আগে inputs validate করুন। একটি self-service action যা
event.body.nameকেuser.user_metadata.display_name-এ লেখে সেটি একটি stored-XSS vector যদি আপনার frontend সেই field escape ছাড়া render করে।
RBAC এবং resource servers
আপনি Auth0 RBAC ব্যবহার করলে, role-to-permission mapping হল আপনার authorization layer। সেটি ভুল করুন এবং যেকোনো authenticated user admin endpoints হিট করতে পারে।
- Auth0 Dashboard-এ Resource Servers (APIs) স্পষ্টভাবে define করুন, on the fly নয়। প্রতিটি API-এর একটি identifier (the
audience), scopes, এবং signing settings আছে। একটি registered API ছাড়া, সমস্ত tokens implicit "Auth0 Management API"-এর জন্য issued — ভুল audience। - API প্রতি Permissions configure করুন এবং আপনার code-এ
scopeclaim দিয়ে সেগুলি প্রয়োজন। আপনার application logic-এ role membership check করবেন না; access token-এ scopes check করুন। Scopes হল OAuth-native authorization mechanism। - Test করুন যে required role / scope ছাড়া একজন authenticated user privileged endpoints হিট করতে পারে না। Normal user হিসাবে sign in করুন,
POST /api/admin/users/deletecall করার চেষ্টা করুন। Response অবশ্যই403হতে হবে।
Anomaly detection এবং tenant logs
Auth0 high-signal events emit করে। সেগুলিকে আপনার team-কে alert করতে setup করুন, শুধু একটি log buffer-এ বসে থাকতে নয়।
- Attack Protection enable করুন: Bot Detection, Brute Force, Suspicious IP Throttling। Dashboard → Security → Attack Protection। প্রতিটি free tiers-এ default-এ off; production-এর জন্য সব on করুন।
- Tenant logs একটি SIEM বা আপনার application logs-এ stream করুন। Dashboard → Monitoring → Streams। Auth0 অধিকাংশ plans-এ 30 দিনের জন্য logs ধরে রাখে; দীর্ঘমেয়াদী retention আপনার নিজস্ব system-এ একটি stream প্রয়োজন।
fcoa(failed cross-origin auth) এবংfp(failed login) spikes-এ alert করুন। অল্প সময়ের window-এ এগুলির একটি burst credential stuffing। আপনার on-call channel-এ route করুন।
পরবর্তী পদক্ষেপ
আপনার production URL-এর বিরুদ্ধে একটি FixVibe scan চালান — baas.clerk-auth0 check JavaScript-এ bundled Auth0 client secrets এবং অন্যান্য identity-provider exposure classes flag করে। Clerk-এ সমতুল্যের জন্য, Clerk security checklist দেখুন। BaaS providers জুড়ে umbrella দৃশ্যের জন্য, BaaS misconfiguration scanner পড়ুন।
