دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه! دوره‌ای که می‌تونه مسیر شغلیت رو عوض کنه!
🎯 ثبت نام
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

امنیت در WCF

دوره های پیشنهادی

WCF –مبحث امنیت

سرویس های WCF دارای سیستم های امنیتی قدرتمند (با دو security mode/level) هستند که به وسیله ی آن ها می توان دسترسی را به کلاینت های مدنظر محدود کرد. با پیاده سازی امنیت در سرویس های WCF تهدید های امنیتی رایج در تراکنش توزیع شده تا حد زیادی کاهش می یابد.

آموزش WCF

ویژگی های کلیدی امنیتی

همان طور که در تصویر زیر مشاهده می کنید، سرویس های WCF از چهار ویژگی کلیدی امنیتی برخوردار هستند.

1. Authentication (سنجش هویت) –در اینجا منظور از سنجش هویت، تنها شناسایی فرستنده ی پیغام نیست بلکه دو طرف فرستنده و دریافت کننده ی پیغام احراز هویت می شوند تا از این طریق احتمال هر گونه حمله ی امنیتی واسطه (middleman attack) از میان برداشته شود.

2. Authorization (تخصیص مجوز) –اقدام دیگری که سرویس WCF برای تامین امنیت اتخاذ می کند، تخصیص مجوز است. در این مرحله مشخص می شود آیا سرویس می بایست به فراخواننده ی سرویس مجوز دسترسی لازم را بدهد یا خیر. اگرچه authorization وابسته به authentication نیست، اما غالبا به دنبال آن اجرا می شود.

3. Confidentiality (خاصیت محرمانگی اطلاعات مورد تبادل) –اطلاعاتی که بین فراخواننده و سرویس رد و بدل می شود، بر اساس این اصل محرمانه باقی مانده تا بدین وسیله از تفسیر (شنود) پیغام (توسط کسانی که پیغام برای آن ها در نظر گرفته نشده) جلوگیری شود. برای فراهم آوردن این امکان، از رمزنگاری (encryption) و دیگر مکانیزم های رایج بهره گرفته می شود.

4. Integrity (جامعیت) –آخرین خاصیت کلیدی که باید به آن اشاره شود، حفظ جامعیت است که به موجب آن این اطمینان داده می شود که پیغام طی انتقال از فرستنده به گیرنده مورد دستکاری یا تغییر قرار نگرفته.

انواع حالت های امنیتی انتقال (Transfer Security Mode)

WCF با ارائه ی حالت های امنیتی زیر تلاش می کند ارتباط ایمن بین کلاینت و سرور را فراهم آورد:

1. None –این حالت هیچ تضمینی برای تامین امنیت پیغام ارائه نمی دهد و سرویس از کلاینت هیچ اعتبارنامه ای (credentials = نام کاربری، گذرواژه و ..) جهت سنجش هویت دریافت نمی کند. استفاده از این حالت، به دلیل عدم تامین امنیت پیغام (احتمال دستکاری پیغام توسط شخص ثالث و عناصر واسطه) توصیه نمی شود.



  

     

  

2. Transport –این حالت امنیتی آسان ترین روش برای فراهم آوردن بستر امن انتقال پیغام از طریق پروتکل های انتقال داده نظیر TCP،IPC ، Https و MSMQ می باشد. این حالت بیشتر برای انتقال اطلاعات بین دو نقطه (point-to-point) و در محیط های کنترل شده همچون اپلیکیشن های intranet مناسب می باشد.



  

     

  

3. Message –این حالت امنیتی امکان احراز هویت دو طرفه (فرستنده و گیرنده ی پیغام) را فراهم آورده و با رمز نگاری پیغام ها امنیت آن ها را تامین می کند. در این حالت می توان پیغام ها را از طریق http که در زمره ی پروتکل های امن قرار ندراد، انتقال داد.در این حالت، امنیت قطع نظر از تعداد عناصر واسطه هایی (intermediary) که در انتقال پیغام وجود دارند یا اینکه پروتکل انتقال امن است یا خیر، به صورت end-to-end تامین می شود (امنیت اتصال end-to-end را فراهم می کند).



  

     

  

4. Mixed –این حالت امنیتی کاربرد کمی داشته و کاربر را تنها در سمت کلاینت احراز هویت می کند.



  

     

  


5. Both –این حالت امنیتی تلفیقی است از دو حالت امنیتی transport و message که پوشش امنیتی قدرتمندی را ارائه می دهد، اما اغلب منجر به overload و افت کارایی می شود. این حالت امنیتی تنها از پروتکل انتقال MSMQ پشتیبانی می کند.



  

     

  


لازم به ذکر است که تمامی binding های WCF به استثنای BasicHttpBinding به صورت پیش فرض تا حدی از امنیت (انتقال) برخوردار هستند.

Message Level Security (امنیت در سطح پیغام)

Message Level Security به پروتکل های WCF وابسته نیست. در Message Security Level تمامی اطلاعات امنیتی داخل خود پیغام کپسوله می شوند. در واقع در صورت استفاده از message security، اعتبارنامه ی امنیتی (credentials) کاربر از طریق تنظیمات WS-Security برای تامین امنیت پیغام ها کپسوله سازی می شوند. این روش از نظر authentication و سنجش هویت کلاینت بیشترین انعطاف پذیری را ارائه می دهد. می توانید فارغ از transport از هر نوع اعتبارنامه ی امنیتی که مایلید استفاده کنید، مادام اینکه هر دو طرف سرویس و کلاینت بر سر آن توافق داشته باشند (message level کاملا از transport مستقل بوده و از این رو می تواند از هر پروتکل انتقالی استفاده کند).

در message level security برای احراز هویت کاربر از روش های زیر استفاده می شود:

1. None –در این روش هیچگونه احراز هویتی اجرا نمی شود، بدین معنی که یک کلاینت ناشناس می تواند به راحتی به سرویس دسترسی داشته باشد. همچنین در این حالت از رمزنگاری (encryption) برای تامین امنیت پیغام استفاده می شود. تمامی binding های WCF به استثنای BasicHttpBinding و NetNamedPipeBinding از این گزینه پشتیبانی می کنند.

2. Windows –windows credentials (نام کاربری و گذرواژه ی ورود به ویندوز) کاربر جاری برای احراز هویت به سرویس ارائه می شود. NetNamedPipeBinding و BasicHttpBinding هر دو از این مورد پشتیبانی نمی کنند. همچنین این حالت پیغام ها را برای انتقال رمزگذاری می کند.

3. UserName –در این حالت کلاینت یا سرویس گیرنده نام کاربری و گذرواژه را برای احراز هویت ارائه می کند. در این روش احراز هویت، پیغام ها رمزنگاری شده و کاربر برای احراز هویت بایستی رمز عبور و نام کاربری را ارائه کند. همانند دو روش سنجش هویت ذکر شده در بالا، این گزینه نیز توسط BasicHttpBinding و NetNamedPipeBinding پشتیبانی نمی شود.

4. Certificate –در این حالت یک گواهی توسط کلاینت به سرویس برای احراز هویت درخواست کننده ارائه می شود. این نوع احراز هویت توسط تمامی binding ها به استثنای NetNamedPipeBinding پشتیبانی می شود.

5. IssuedToken –احراز هویت کاربر از طریق توکن بین کلاینت و سرویس انجام می شود. در واقع پیغام ها از طریق یک توکن که توسط (برای مثال) کامپوننت مدیریت هویت Cardspace ایجاد شده، authenticate می شوند. این روش نیز از رمزنگاری پیغام پشتیبانی می کند.

کد زیر نشان می دهد چگونه روش های مختلف احراز هویت (client credentials) در حالت امنیتی message (message security mode) تنظیم می شوند:



  

     

        

       

  



...



...

transport security mode از جهاتی بر message security level برتری دارد. از جمله می توان به سریع تر بودن transport security نسبت به message security اشاره کرد. Transport security همچنین به کدنویسی کم تر احتیاج داشته و به سبب پشتیبانی از قابلیت همکاری (interoperability) افت در کارایی را سبب نمی شود.

اما از نظر امنیت، message security قدرتمند تر از حالت امنیتی دیگر است. همچنین از پروتکل مستقل بوده (از هر پروتکلی می تواند استفاده کند) و امنیت اتصال end-to-end را تامین می کند.

1395/05/13 2640 4
نظرات شما

نظرات خود را ثبت کنید...