نکته:
ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:
دوره جامع امنیت Full Stack با استفاده از Angular، Spring Boot 3 و میکروسرویسها شامل OIDC، RBAC، ورود اجتماعی (Social Login)، CSRF، CORS و پیادهسازی POCهای پیشرفته
در این دوره شما موارد زیر را خواهید آموخت:
- تسلط بر معماری Spring Security 7 شامل احراز هویت (Authentication)، تعیین سطح دسترسی (Authorization)، زنجیره فیلترهای امنیتی و جریان درخواستهای داخلی
- پیادهسازی احراز هویت کاربر با استفاده از UserDetailsService، PasswordEncoder و مدیریت کاربران مبتنی بر دیتابیس
- درک تفاوت Roleها و Authorityها و پیادهسازی RBAC و ABAC در اپلیکیشنهای واقعی
- اعمال امنیت در سطح Endpoint و متد با استفاده از @PreAuthorize و @PostAuthorize
- تسلط بر Request Matcherها شامل Ant، MVC، Regex و رویکردهای مدرن Spring Security 6
- یادگیری مفاهیم بنیادی OAuth2 شامل Actorها، Scopeها، جریانها و معماری امنیتی
- پیادهسازی Authorization Code Flow و PKCE برای اپلیکیشنهای وب و موبایل مدرن
- پیادهسازی Client Credentials Flow برای ارتباطات امن ماشین-به-ماشین (M2M)
- پیادهسازی Refresh Token Flow و درک چرخه حیات توکنها و بهترین متدهای امنیتی
- تسلط بر امنیت JWT شامل ساختار توکن، Claims، امضا، تایید اعتبار و رمزنگاری کلید عمومی/خصوصی
- اعتبارسنجی JWT با استفاده از JwtDecoder و JwtAuthenticationConverter در Spring Boot
- درک OIDC (OpenID Connect) و نحوه عملکرد لایه هویت روی OAuth2
- پیادهسازی معماری SSO (ورود یکپارچه) با استفاده از OAuth2 و OIDC
- درک مکانیزم حفاظتی CSRF و دلیل فعال بودن پیشفرض آن در Spring Security
- پیکربندی CORS و درک رفتار امنیتی درخواستهای Cross-Origin
- پیادهسازی Auth0 شامل Applicationها، APIها، Audience، نقشها و نگاشت دسترسیها در JWT
- پیادهسازی Keycloak شامل Realm، Clientها، نقشها، گروهها و تنظیمات Identity Provider
- پیادهسازی ورود اجتماعی با گوگل و گیتهاب از طریق OAuth2 / OIDC
- پیادهسازی RBAC در میکروسرویسها با استخراج نقشها و دسترسیها از توکنهای JWT
- تحلیل تفاوت JWT و Opaque Tokens و زمان استفاده از هر استراتژی
- طراحی معماری امنیت End-to-End مورد استفاده در اپلیکیشنهای سازمانی واقعی
- ساخت اپلیکیشن Full Stack با Angular و Spring Boot مجهز به Spring Security
- ساخت POC کامل Auth0 شامل ورود، نقشها، دسترسیها و APIهای امن شده با JWT
- ساخت POC کامل Keycloak شامل Realm، کلاینتها، نقشها و میکروسرویسهای امن
- پیادهسازی کامل جریان احراز هویت از لاگین فرانتاند تا APIهای امن بکاند
- اعمال بهترین متدهای امنیتی (Best Practices) و اجتناب از اشتباهات رایج در سیستمهای Production
- تحلیل تفاوتهای Keycloak و Auth0 و معیارهای انتخاب هر یک
پیش نیازها:
- دانش پایه Java و Spring Boot
- آشنایی اولیه با REST API و مفاهیم HTTP
- آشنایی مقدماتی با Angular یا فرانتاند (کمککننده است اما اجباری نیست)
- نیازی به دانش قبلی از Spring Security، OAuth2 یا JWT نیست
- سیستمی با قابلیت اجرای Java، IDE و مرورگر
سرفصلهای آموزشی:
اساسيات Spring Security:
- تسلط بر امنیت
- امنیت در Spring Boot و میکروسرویسها
- چرا اپلیکیشن Spring Boot شما به امنیت نیاز دارد؟
- Spring Security چیست؟
- مفاهیم کلیدی Spring Security
- احراز هویت (Authentication)
- تعیین سطح دسترسی (Authorization)
- فیلترهای Servlet
- جایگزینهای Spring Security چیست؟
- مسئولیت پیادهسازی امنیت بر عهده کیست؟
- شروع عملی
- تحلیل خطای 401
- جمعبندی
- رویکرد Convention-over-Configuration در Spring Security
- بازیگران کلیدی در فریمورک احراز هویت
- جریان احراز هویت در Spring Security
- Beanهای خودکار در Spring Security
- بررسی UserDetailsService
- بررسی PasswordEncoder
پیکربندی Spring Security:
- معرفی POC 2
- بازنویسی (Overriding) تنظیمات پیشفرض
- شخصیسازی پیکربندی Spring Security
- چرا اکنون احراز هویت شکست میخورد؟
- رفع خطاهای احراز هویت گام به گام
- تعریف اعتبارنامههای کاربر
- افزودن کاربر به InMemoryUserDetailsManager
- تعریف PasswordEncoder Bean
- چرا باید از HTTP Basic Authentication اجتناب کرد؟
مدیریت کاربران:
- مفاهیم مدیریت کاربر
- اجزای مدیریت کاربر
- بررسی UserDetails
- بررسی UserDetailsManager
- بررسی User
- شخصیسازی User Details Service
- پیادهسازی POC 3
- ایجاد جداول User و Authority
- نگاشت جداول کاربر و دسترسیها
- تحلیل Eager Fetching در Authorityها
- دریافت دسترسیهای ذخیره شده از SecurityContext
تعیین سطح دسترسی (Authorization):
- مفاهیم Authorization
- نحوه عملکرد تعیین سطح دسترسی
- اهداف آموزشی این بخش
- بررسی GrantedAuthority
- تفاوت بین Authority و Role
- سطوح مختلف پیادهسازی Authorization
- تعیین سطح دسترسی در سطح Endpoint
زنجیره فیلترهای امنیتی (Security Filter Chain):
- مفاهیم Security Filter Chain
- تعریف یک Filter Chain
- تغییر در Filter Chain
- چرا همچنان خطای 403 دریافت میکنیم؟
- بررسی anyRequest().authenticated()
- بررسی anyRequest().permitAll()
- بررسی anyRequest().hasAuthority()
- بررسی anyRequest().hasAnyAuthority()
- مفهوم Role
- بررسی anyRequest().hasRole()
- بررسی anyRequest().hasAnyRole()
- تحلیل 401 در مقابل 403
- بررسی anyRequest().access()
- مزایای متد access()
- معایب متد access()
- بررسی anyRequest().denyAll()
درخواستهای تطبیقدهنده (Request Matchers):
- معرفی متدهای Matcher
- لیست کامل تمامی متدهای Matcher
- معرفی Request Matcher
- متدهای Request Matcher
- مثالهای دنیای واقعی برای درک بهتر
- نحوه عملکرد requestMatchers() در این تنظیمات
- بررسی کدها
انواع Matcherها:
- Ant Matcher
- متدهای Ant Matcher
- دلیل محبوبیت Ant Matcher
- مثال در Spring Security 5.x
- دلیل منسوخ شدن در Spring Security 6+
- MVC Matcher
- متدهای MVC Matcher
- دلیل استفاده از MVC Matcher
- Regex Matcher
- بررسی regexMatchers()
- کاربردهای Regex Matcher
- Dispatcher Type Matcher
- مفهوم و کاربرد DispatcherType
- Servlet Path Matcher
- کاربرد Servlet Path Matcher
- آیا در اپلیکیشنهای Spring Boot کاربردی دارد؟
- ترکیب تمامی متدهای Matcher
امنیت در سطح متد (Method Level Security):
- تعیین سطح دسترسی در سطح متد
- تحلیل وضعیت فعلی
- آیا Spring Security در اپلیکیشنهای غیر وب قابل استفاده است؟
- کجا میتوانیم امنیت متد را اعمال کنیم؟
- چرا از Method Security استفاده کنیم؟
- نقش احراز هویت در فعالسازی امنیت متد
- چرا نباید از permitAll() در امنیت متد استفاده کرد؟
- بررسی قطعه کدهای نمونه
- نحوه فعالسازی امنیت متد
- روشهای جدید فعالسازی Authorization در سطح متد
- تحلیل اتفاقات پشت صحنه
- چرا از اصطلاح Aspect استفاده میشود؟
- جلوگیری از ایجاد God Class با امنیت متد
- بهترین متدها (Best Practices)
- اولویت قوانین: تنظیمات Security Config در مقابل امنیت متد
- ملاحظات عملکردی: امنیت در سطح متد در مقابل سطح فیلتر
- چگونه امنیت متد فراتر از فیلترها عمل میکند؟
- استفاده از @PreAuthorize چندخطی برای قوانین پیچیده
- معایب قوانین چندخطی
- فراتر از SpEL: بررسیهای امنیتی مبتنی بر Bean
- بررسی Post Authorize
- تفاوت @PreAuthorize و @PostAuthorize
فیلترها در امنیت متد:
- بررسی Pre filter
- نکات کلیدی Pre filter
- نکات کلیدی Post filter
- تلهها و اشتباهات رایج Post Filter
- مقایسه PreFilter و PostFilter
- مقایسه @Pre/@PostAuthorize با @Pre/@PostFilter
مبانی OAuth2 و OIDC:
- معرفی OAuth2 و OIDC
- مفاهیم پایه
- بازیگران و نقشها در OAuth2
- جریان (Flow) در OAuth2
- راهکار ارائه شده توسط OAuth 2.0
- دلیل قدرت و محبوبیت این پروتکل
- گامهای OAuth 2
- نحوه دریافت توکن
- هسته مرکزی همکاری OAuth2 و Spring Security
- انواع Grant types
- بررسی انواع Grant types
- Grant typeهای منسوخ شده
- اصل امنیتی اصلی OAuth
- چرا Password Grant Type منسوخ شد؟
- جایگزینهای مدرن
- چرا Implicit Grant Type منسوخ شد؟
- جمعبندی
جریان Authorization Code Flow:
- مفاهیم Authorization Code Flow
- Grant Type کد تایید چیست؟
- تحلیل گام به گام جریان
- مزایا
- معایب
جریان Authorization Code Flow به همراه PKCE:
- PKCE چیست؟
- دلیل معرفی PKCE
- بازیگران در PKCE
- تحلیل گام به گام Authorization Code Flow با PKCE
- نحوه جلوگیری از حملات توسط PKCE
- نحوه عملکرد Verifier و Challenge
- مثال دنیای واقعی: قفل و کلید
- جمعبندی جریان PKCE
- مقایسه Authorization Code در مقابل نسخه PKCE
- نکات مهم برای به خاطر سپردن
جریان Client Credentials Flow:
- Grant Type اعتبارنامه کلاینت
- Client Credentials چیست؟
- چه زمانی از آن استفاده کنیم؟
- بازیگران این جریان
- تحلیل گام به گام جریان
- پاسخ نمونه توکن
- متدهای احراز هویت کلاینت با AS
- نحوه نگاشت Scopes به Authorities
- بررسی Scopes و authorities
- توکنها: JWT در مقابل Opaque
- ملاحظات امنیتی و بهترین متدها
- تلهها و نکات حیاتی
جریان Refresh Token Flow:
- Grant Type توکن تازهسازی
- Refresh Token چیست؟
- چرا به Refresh Token نیاز داریم؟
- چه کسانی از این جریان استفاده میکنند؟
- تحلیل جریان Refresh Token
- توکنهای استاتیک (قابل استفاده مجدد)
- توکنهای چرخان (یکبار مصرف)
- نحوه تصمیمگیری سرورهای OAuth2
- وظایف کلاینتها
- زمانهای کلیدی عمر توکن
- چرا Refresh Tokenها حساس هستند؟
- مقایسه جریان Access Token و Refresh Token
توکنها:
- توکن Opaque چیست؟
- نحوه عملکرد توکن Opaque
- پاسخ Introspection
- توکنهای غیر Opaque در مقابل Opaque
JWT (JSON Web Token):
- معرفی JWTها
- JWT چیست؟
- ساختار پایه یک توکن JWT
- نحوه عملکرد JWT
- متدهای امضای JWT
- Claimهای رایج در JWT
- نحوه تایید اعتبار JWTها
- کلیدهای خصوصی و عمومی
- فایل jwks.json چیست؟
- دلیل محبوبیت JWTها
- محدودیتها و تلهها
OIDC (OpenID Connect):
- معرفی OIDC
- OIDC چیست؟
- جریان کد تایید با PKCE
- مثال دنیای واقعی (ورود با گوگل)
- دلیل وجود OIDC
- ماهیت واقعی OIDC
- اجزای اصلی OIDC
- توکن ID (ID Token)
- Claimهای استاندارد در ID Token
- Scopeهای OIDC
- Endpointهای OIDC
- مزایای OIDC
- اشتباهات رایج
- مفهوم Nonce
- چرا از Nonce استفاده میکنیم؟
SSO (ورود یکپارچه):
- مفاهیم SSO
- SSO چیست؟
- بازیگران در SSO
- گامهای SSO با مثال واقعی
- چرا SSO به این شکل بهینه عمل میکند؟
- اشتباهات رایج در SSO
- مزایای امنیتی SSO
- سناریوهای خروج (Logout) در SSO
- چرا OAuth2 و OIDC برای SSO ضروری هستند؟
CSRF (جعل درخواست میانسایتی):
- مفاهیم CSRF
- CSRF چیست؟
- رفتار اصلی مرورگر
- چرا CSRF خطرناک است؟
- نحوه توقف CSRF توسط وبسایتها
- چرا Spring Security به صورت پیشفرض CSRF را فعال میکند؟
CORS (اشتراک منابع بین مبدا):
- مفاهیم CORS
- CORS چیست؟
- دلیل وجود CORS
- مفهوم Origin چیست؟
- قوانین CORS
- پیکربندی CORS در Spring Boot
- اشتباهات رایج در CORS
- مقایسه CORS در مقابل CSRF
پروژه عملی Full Stack POC:
- معرفی پروژه Full Stack
- معرفی اپلیکیشن Foodify
- بررسی UI اپلیکیشن Foodify
- بررسی بکاند اپلیکیشن Foodify
- پیکربندیهای Auth0
- پیادهسازی Spring Security
Auth0:
- Auth0 چیست؟
- اجزای کلیدی Auth0
- اتفاقات هنگام لاگین
- چرا از Auth0 استفاده کنیم؟
- MFA (احراز هویت چندعاملی)
- ورود اجتماعی (Social Login)
- هویت متمرکز
- بهرهوری توسعهدهنده
- چه زمانی باید سیستم را خودمان بسازیم؟
نقشها و دسترسیها:
- تفاوت Authentication و Authorization
- OAuth2 / OIDC چیست؟
- معماری POC End-to-End با Auth0
- مفهوم Application در Auth0
- مفهوم API در Auth0
- Audience چیست؟
- Roleها چیستند؟
- Permissionها چیستند؟
- مقایسه Role در مقابل Permission
- RBAC چیست؟
- چرا از RBAC استفاده میشود؟
- چرا نقشها و دسترسیها در JWT قرار میگیرند؟
پردازش JWT در Spring Security:
- JwtDecoder چیست؟
- JwtAuthenticationConverter چیست؟
- مفهوم Authority در Spring
- پیشوند _ROLE
- اشتباهات رایج
گامهای پیادهسازی:
- مراحل پیادهسازی Spring Security
- مراحل تنظیم Auth0
- مراحل افزودن نقشها به توکن
- تحلیل اتفاقات در بکاند
- جریان نهایی (End-to-End)
- مفاهیم کلیدی
- اشتباهات رایج
Keycloak:
- معرفی Keycloak
- Keycloak چیست؟
- معماری سطح بالا
- اصطلاحات کلیدی
- انواع Clientها
- انواع نقشها
- Client Scope
- گروهها (Groups)
- تامینکننده هویت (IDP)
- جریانها
- مقایسه Keycloak در مقابل Auth0
- مقایسه ویژگیها
- چه کسی باید Keycloak یا Auth0 را انتخاب کند؟
ورود اجتماعی (Social Login):
- مفاهیم Social Login
- Social Login چیست؟
- نحوه عملکرد
- مزایای ورود اجتماعی
- پیکربندی Identity Providerها در Keycloak
- گامهای ورود با گوگل
- گامهای ورود با گیتهاب
سرفصل ها و درس ها
مقدمه
Introduction
معرفی دوره
Course Introduction
اساسيات Spring Security
Spring Security Basics
چرا اپلیکیشن Spring Boot شما به امنیت نیاز دارد؟
Why Security for your spring boot app ?
Spring Security چیست؟
What is Spring Security ?
مفاهیم کلیدی Spring Security
Key Spring Security Concepts
احراز هویت (Authentication) چیست؟
What is Authentication ?
تعیین سطح دسترسی (Authorization) چیست؟
What is Authorization ?
فیلترهای Servlet چیستند؟
What are Servlet Filters ?
جایگزینهای Spring Security چیستند؟
What are the alternatives of Spring Security ?
مسئولیت پیادهسازی Spring Security بر عهده کیست؟
Spring Security Implementation - Who’s responsibility
کوییز مفاهیم پایه Spring Security
Spring Security Basic Quiz
بحث مفاهیم پایه با Karan
Spring Security Basic with Karan
نمایش نظرات