استفاده از سرویسهای متنوع گوگل همگی با یک آکانت واحد، ایدهی جالبی است که پایهی ایجاد پروژهای به نام
IdentityServer بوده است.
IdentityServer یک پروژهی متن باز است که قرار بود و شاید هنوز هم هست که بخشی از ویژوال استودیو باشد.
این پروژه یک سرور واحد برای مدیریت هویت ایجاد میکند که تمام کلاینتها از این سرور اهراز هویت شده و سپس از سرویسها استفاده میکنند. یعنی بخش مدیریت هویت تمام کاربران در پروژه برعهدهی
IdentityServer گذاشته میشود و همهی برنامهها هویت کاربران را از
IdentityServer می پرسند.
تصویری که توسعه دهندگان این پروژه برای معماری پروژه خود ارائه دادهاند:
برای استفاده از آیدنتیتیسرور، ابتدا آن را از مخزن گیتهاب، بارگذاری میکنیم و سپس برای پروژه، یک Application جدید در IIS ایجاد میکنیم.
دقت داشته باشید که
IdentityServer از SSL و بستر امن استفاده میکند که تنظیمات ساخت Certificate را میتوانید از
اینجا فرا بگیرید.
با توجه به پشتیبانی گستردهی این پروژه از
OpenID و
OAuth2 مطالعهای مختصر در این موارد به درک فرایند اهراز هویت توسط آی دنتیتی سرور
بسیار کمک خواهد کرد. پس از راه اندازی SSL و تنظیمات Certificate مربوط به آن میتوانید شروع به راه اندازی سرور خود کنید. راه اندازی اولیه سرور تنظیمات مربوط به بانک اطلاعاتی، نکات ریزی دارد که بخش کلی از آن
اینجا آمده است.
برای شروع به استفاده از سرور و درک چگونگی عملکرد آن نیاز دارید تا مدیر سرور را نصب کنید؛ تا هم بتوانید کاربر تعریف کنید و هم نقشها (Roles) و دسترسیها را مدیریت کنید. نگارش مدیر آیدنتیتیسرور نیز از
اینجا قابل دسترسی میباشد.
پس از نصب آیدنتیتیسرور باید تنظیمات مربوط به ذخیره سازی اطلاعات آن را انجام دهید که آیدنتیتیسرور پیاده سازی خوبی برای Entity Framework دارد که میتوانید با نصب آن همهی کارهای ذخیره سازی در بانک اطلاعاتی را به EF بسپارید. البته برای ذخیرهی یوزر میتوان از حالت InMemory هم استفاده کرد که در
نسخهی مثال یک کاربر با نام bob و رمز bob در داخل کد نویسی تعریف شده بود، که میتوان برای پروژههای کوچک همان را توسعه داد.
در سطح بانک هم آیدنتیتیسرور از دو بانک اطلاعاتی، استفاده میکند؛ یکی برای ذخیرهی تنظیمات سرور و دیگری برای ذخیرهی اطلاعات هویتی.
مزیت بزرگ آیدنتیتیسرور در اعتبار سنجی جدای از پیاده سازیهای فراوان انجام شده برای محیطهای مختلف و در قابلیت اعتبار سنجی دو طرفهی آن میباشد.
یعنی هم سمت سرور و هم سمت کلاینت و هم سرویسهایی که از آیدنتیتیسرور استفاده میکنند، باید اعتبار سنجی شوند و همه چیز به یک رمز و نام کاربری ساده خلاصه نمیشود.
در زمان نگارش این متن، نسخهی 2 نسخهی پایدار ارائه شده است و نسخهی سه در مرحله تست میباشد. البته پیاده سازیهایی هم از نسخهی 3 در محیطهای مختلف مثل MVC و WEB API ارائه شده است؛ ولی هنوز به پایداری لازم نرسیده است.