‫استفاده از Authentication/Authorization استاندارد WCF یا پیاده‌سازی خودمان؟

WCF خودش مکانیزم‌های زیادی برای Authentication و Authorization دارد. یکی از سناریوهای ممکن برای Membership یک برنامه نوعی می‌تواند این باشد که Membership در سرور با استفاده از یک Windows Domain Controller تعریف شده و به ازای همه کاربران و نقش‌های ممکن، در آن domain به تعداد مورد نیاز Windows Account و Windows Group ساخته شود. سپس Role Management تمام سرویس‌ها بر اساس این Windows Groupها تعریف شده و کاربران برنامه WCF هم بر اساس Windows Accountهای تعریف شده در domain وارد سیستم شوند.

سناریوی دوم این است که از مکانیزم Authentication و Authorization داخلی WCF استفاده نکرده و به جای آن خودمان همه موارد مورد نیاز Membership را پیاده‌سازی کنیم. این طوری کنترل بیشتری روی کار داریم ولی باید زحمت بیشتری کشیده و خیلی از موارد را که قبلاً WCF پیاده‌سازی کرده، مجدداً خودمان پیاده‌سازی نماییم. هر چند که این روش توصیه شده نیست ولی وقتی که روش Authentication و Authorization انتخابی ما زیادی پیچیده و غیر معمول است چاره‌ای نیست جز این که خودمان همه چیز را انجام دهیم.

‫Authentication و Authorization در WCF‫

Authentication در WCF به چندین روش انجام می‌شود:

No authentication
هیچ نوع authenticationی انجام نمی‌شود.

Windows authentication
در صورت وجود domain server از Kerberos و در غیر این صورت از NTLM استفاده می‌شود.

Username و Password
user name و password می‌تواند بر اساس اکانت‌های ویندوز یا یک روش سفارشی سازی شده سنجیده شود.

X509 certificate
کلاینت خودش را با استفاده از یک certificate به سرور می‌شناساند.

Custom mechanism
برنامه‌نویسان می‌توانند روش authentication خاص خودشان را پیاده‌سازی کرده و WCF را مجبور به استفاده از آن کنند.

Issued Token
در این روش هم سرور و هم کلاینت از یک سرویس دیگر مثل Windows Card Space برای authentication استفاده می‌کنند.

WCF برای Authorization هم از دو روش آشنا استفاده می‌کند. یکی استفاده از Windows groups و دیگری استفاده از ASP.NET role provider.

منبع: فصل ۱۰ کتاب Programming WCF Services