همه چیز درباره هویت فدرالی | Federated identity | فدراسیون هویت | oAuth, openID, SAML
در این مقاله میخواهیم به تعریف هویت فدرالی Federated identity و پروتکل های آن بپردازیم:
مفاهیم اولیه هویت
برای اینکه به مبحث هویت فدرالی یا identity federation بپردازیم نخست باید مفاهیم اولیه را مرور کنیم. که هویت و احراز هویت دقیقا چه معنی دارد؟
identity یا هویت
هویت دیجیتالی یا identity اطلاعاتی است از یک موجودیت که توسط سیستم استفاده میشود. که بوسیله آن بتوان یک عامل خارجی یا همان external agent را نمایندگی کرد.
اطلاعات موجود در هویت دیجیتال امکان ارزیابی و احراز هویت کاربری را فراهم می کند که بدون درگیر شدن اپراتورهای انسانی در وب با یک سیستم تجاری در تعامل است. هویت های دیجیتال اجازه می دهد دسترسی ما به رایانه ها و خدماتی که آنها ارائه می دهند خودکار باشد و امکان میانجی گری روابط برای رایانه ها را فراهم می کند.
اصطلاح “هویت دیجیتال” همچنین جنبه های خاصی از هویت مدنی و شخصی را نشان می دهد که ناشی از استفاده گسترده از اطلاعات هویتی در دنیای دیجیتال است.
احراز هویت یا authentication
اصالتسنجی یا احراز هویت به تعیین صحت و سقم یک ویژگی، داده یا نهاد گفته میشود. این فرایند ممکن است شامل تأیید هویت یک شخص، دنبال کردن ریشههای یک سازهٔ بشری، مطمئن شدن از اینکه یک کالا همانی است که بستهبندی و شناسبرگش ادعا میکنند، یا اطمینان از قابل اعتماد بودن یک نرمافزار رایانهای باشد.
متد های احراز هویت Authentication Methods
روش های احراز هویت زیادی وجود دارند، برخی نا امن هستند و منسوخ شدند و برخی کردی هنوز کاربرد دارند. اگر به یاد داشته باشید شاید حدود 20 سال پیش احراز هویت روند ساده تری از امروز داشت. با گذشت زمان و پیشرفت تکنولوژی و افزایش تعداد کاربران روش های امنت تر و پیچیده تری جایگزین شد. ولی حتی در بین روش های مدرن نیز گاهی امنیت پایینتر است.
احراز هویت با پسورد Password based authentication
شاید زمان یاهو مسنجر را به یاد داشته باشید، که احراز هویت شما صرفا با یک پسورد و آیدی انجام میشد. در این روش پسورد شما در دیتابیس سرور رمزگذاری میشود وهنگام ورود اگر رمز و آیدی را صحیح وارد کنید فرایند احراز هویت شما با موفقیت انجام شده!
احراز هویت چند مرحله ای Multi factor authentication
در این روش از احراز هویت، هنگامی که آیدی یا شماره خود را به وبسایت یا اپلیکیشن میدهید، اپلیکیشن کدی را در سرور به صورت تصادفی یا random ایجاد میکند و آن را به شما پیامک میکند، یا با اپلیکیشن دیگری مانند Google Authenticator برای شما ارسال میکند. اگر کد را صحیح وارد کنید فرایند احراز شما صورت میگیرد.
احراز هویت بوسیله سرتیفیکیت Certificate based authentication
احراز هویت به وسیله سرتیفیکیت یا سند نیز کاربرد وسیعی دارد. مثلا در ارتباط دو سرور با یکدیگر اینگونه عمل میشود که دو سند توسط الگوریتم رمزنگاری مثلا RSA تولید میشود که یکی Private key نام دارد و دیگری public key . این کلیدها در سیستم ذخیره میشوند و اگر private key ارسالی شما با public key سازگار بود احراز هویت صورت میگیرد و دیگر نیاز به وارد کردن رمز نیست.
در ارتباط دو سرور در terminal کار را بسیار راحت میکند و همچنین در VPN ها نیز کاربرد وسیعی دارد.
احراز هویت بایومتریک Biometric authentication
احراز هویت بایومتریک روشی است که به کاربر اجازه میدهد بوسیله اعضا بدن مانند اثر انگشت، چشم و صورت با سرور احراز هویت کند. اثر انگشت و یا Face ID گوی های تلفن همراه از اینگونه احراز هویت است.
احراز هویت با توکن ها کوتاه مدت Token based authentication
در احراز هویت بوسیله توکن، رمزی توسط سرور برای مدتی محدود تولید میشود و به کاربر اجازه استفاد کوتاه مدت از خدمات را میدهد و درواقع به صورت کوتاه مدت احراز هویت صورت میگیرد.
هویت فدرالی، Federated identity یا فدراسیون هویت چیست؟
کلمه فدرال به معنی سیستمیست که دارای اجزا مختلفی است که هریک امور داخلی متفاوتی دارند ولی همگی توسط یک دولت (یا سیستم )مرکزی متحد شده اند. مثل فدراسیون های مختلف در ایران، اتحادیه اروپا و سیستم کشور آمریکا.
در دنیای دیجیتال هویت فدرالی نیز اینگونه عمل میکند. بگذارید با مثالی ساده شروع کنیم:
در عکس اول کاربر، بر فرض دانشجوی یک دانشگاه به کتابخانه مرکزی دانشگاه میرود و تقاضای کتاب میکند. متصدی کتابخانه از اون میخواهد که amy خود را معرفی کند. برای اینکار متصدی کتابخانه دفترچه ای دارد که در آن میتواند بفهمد کجا میتواند ادعای این فرد را ثابت کند.
او متوجه میشود که باید با آموزش و پرورش برای احراز هویت تماس بگیرد.
برای احراز هویت آموزش و پرورش میخواهد که با amy صحبت کند تا از هویت او مطمئن گردد. بعد از اینکه این اتفاق افتاد به متصدی میگوید که این فرد دانشجوی دانشگاه آزاد است و هویتش مورد تایید است.
متصدی کتابخانه از دانشگاه علمی کاربردی میخواهد اسم این فرد را به اشتراک بگذارد ولی دانشگاه این کار را نمیکند چون بر خلاف قوانین است!
این نکته مهمی است چرا که در فرایند هویت فدرالی صدق میکند.
سپس متصدی به این دانشجو یک badge میدهد که دیگر نیاز نباید برای رفتن به بوفه و بقیه اماکن دانشگاه احراز هویت کند.
در این مثال دانشگاه علمی کاربردی identity provider
متصدی کتابخانه service provider
دانشجو User agent
و دفتر تلفن Federation میباشد
در مثال پایین میبینیم که تفاوت هویت فدرالی این است که اعتمادسازی باید بین Service Provider و Identity Provider صورت بگیرد.
Service provider وبسایتی است که میخواهیم از خدمات آن استفاه کنیم و Identity Provider محلیست که اطلاعات هویتی ما در آنجا مورد تایید قرار میگیرد
همینطور که در ویدیو مشاهده میکنید اعتمادسازی بین سرور و identity provider برقرار میشود
و سپس سرور خدماتی به user agent یک نماد یا badge میدهد که میتواند در وبسایتی دیگر که از این خدمات استفاده میکنند نیز به صورت خودکار لاگین شود.
در سناریو لاگین به صورت عادی ( نه فدرالی) همینطور که از شکل پیداست کاربر برای احراز هویت در هر وبسایت نیازمند لاگین و ارسال اطلاعات است:
ولی در سناریو هویت فدرالی، احراز هویت توسط identity provider صورت گرفته و برای همه وبسایت های متصل به این مرکز احراز هویت صورت گرفته:
موارد استفاده هویت فدرال یا Federal identity:
شرکت های زیر از اینگونه خدمات استفاده میکنند و یا آن را به دیگران نیز ارائه میکنند:
- Microsoft account
- Google Account
- Yahoo!
- PayPal
- Foursquare
- MySpace
- AOL
- Mozilla Persona
- Amazon
- GitHub
هویت فدرال یا احراز هویت فدرالی در گوگل:
(ویدیو زیر توضیح میدهد که گوگل چگونه از این سیستم برای احراز هویت شما استفاده میکند)
مزایای هویت فدرال یا federal identification
یکبار ورود یا single sign-on
در این سیستم کافیست یکبار احراز هویت شوید و سپس به وسیله همان احراز هویت در چند وبسایت یا سرویس لاگین باشید.
کاهش ریسک امنیتی در federal identity
امینیت بالا کی از مزایای فدرال آیدنتتی هست، به این صورت که نیازی نیست بخش امنیتی احراز هویت را به عهده بگیرید و سازمانی متخصص آن را به صورت حرفه ای انجام میدهد.
افزایش کارایی در هویت فدرال:
هنگامی که از این سیستم استفاده میکنید بخاطر صرفه جویی در وقت، بالابردن امنیت و آسان کردن کار، کارایی شما و یا کارمندان سازمان بالا میرود.
منابع و هزینه در سیستم احراز هویت فدرالی:
نیاز به صررف منابع و هزینه برای ایجاد سیستم احراز هویت سازمان ندارید چرا که بخش عمده آن توسط سیستم فدرال انجام میشود.
کاهش پیچیدگی با هویت فدرالی
نیاز نیست هزاران کاربر با دستگاه های مختلف را احراز هویت کنید به همین خاطر کار شما پیچیدگی بسیار کمتری پیدا میکند
محدودیت ها
مدیریت هزاران کاربر و session ها در دیتابیس برای اپلیکیشن ها بسیار سخت است، کامپایل کردن این اطلاعات حجم بسیار بالایی از سرور های شمارا اشغال میکند. ولی در سیستم فدرالی این امر توسط شما مدیریت نمیشود و توسط identity provider امکان پذیر میشود.
آپدیت بودن
بخاطر اینکه ارتباط میان سرور اپلیکیشن و مرکز احراز هویت انجام میشود، ارتباط میان این دو برقرار میشود، نه مرورگر و سرور. پس اطلاعات شما همیشه در سریع ترین زمان آپدیت میشود بدون اینکه شما دخالتی داشته باشید.
تکنولوژی ها و پروتکل های مورد استفاده در سیستم احراز هویت فدرالی
تکنولوژی های متفاوتی در سیستم احراز هویت فدرالی استفاده میشود که از مهم ترین این تکنولوژی ها SAML, openID و oAuth نام دارد.
SAML چیست؟
سمل، یا Security Assertion Markup Language به صورت مخفف SAML یک استاندارد باز برای تبادل داده های احراز هویت و مجوز بین طرفین ، به ویژه بین یک ارائه دهنده هویت و یک ارائه دهنده خدمات است. SAML یک زبان نشانه گذاری مبتنی بر XML برای ادعاهای امنیتی است (اظهاراتی که ارائه دهندگان خدمات برای تصمیم گیری در مورد کنترل دسترسی استفاده می کنند).
oAuth چیست؟
OAuth یک قرارداد باز است که به کاربران خدمات اینترنتی بکارگیرندهٔ آن اجازه میدهد اطلاعات کاربریشان را بدون نیاز به دادن گذرواژه و نام کاربری، به صورت امن، با خدمات دیگر به اشتراک بگذارند. برخی از وبگاههای مهم از جمله گوگل و توییتر از آن پشتیبانی میکنند.
openID چیست؟
اپن آیدی (OpenID) یک سامانه single sign-on یا شناسایی یگانه است. اپن آیدی بر روی oAuth ساخته شده است.
تفاوت SAML، oAuth و openID چیست؟
oAuth 2.0 ورژن شماره 2 oAuth که در سال 2005 ارائه شد در اصل چارچوب برنامه نویسی است که وظیفه آن کنترل احرازهویت برای منابع حفاظت شده ای مانند فایل ها و فولدر هاست.
openID یا openID connect بر روی oAuth 2.0 ساخته شده و از JSON web token به نام ID token برای استاندارد سازی محیط هایی که oAuth به انتخاب میگذارد استفاده میکند.
SAML 2.0 نیز برای احراز هویت بکار میرود با این تفاوت که از oAuth و openID مستقل عمل میکند و برای رمزنگاری و انتقال پیام از Service Provider به Identity Provider مورد استفاده قرار میگیرد. همچنین SAML از XML برای این رمزگزاری استفاده میکند نه از JSON.
پیاده سازی احراز هویت فدرالی چگونه است؟
اجازه دهید یک مثال دیگر بزنم برای اینکه چگونه سیستم احراز هویت فدرالی بوسیله oAuth و openID پیاده سازی میشود.
حتما تابحال با این صحنه مواجه شدید. اگر اینطور است از سیستم هویت فدرالی استفاده کرده اید.
در این عکس کاربر برای ورود به سیستم میخواهد از گوگل مجوز هایی دریافت کند. همچنین میتواند از توییتر، فیسبوک و گیتهاب نیز استفاده کند.
فرض را بر این بگیریم که شما اپلیکیشنی ساخته اید و میخواهید کاربر توسط دفترچه تلفن گوگل دوستان خود را به صورت خودکار در شبکه اجتماعی شما به لیست دوستانش اضافه کند.
برای این کار طبق عکس بالا میخواهیم از کاربر این اجازه را دریافت کنیم که اطلاعات مخاطبینش را در گوگل مشاهده کنیم. برای اینکار نمیتوانیم مستقیما با گوگل ارتباط بگیریم چرا که این اجازه را به ما نمیدهد.
همچنین نمیتوانیم اطلاعات کامل کاربری را از شخص بگیریم چرا که کاربر اعتماد نخواهد کرد و این کار اصولی نیست!
پس (طبق عکس بالا) روال کار به این صورت است که اول از مخاطب درخواست صدور مجوز را میگیریم. کاربر در گوگل احراز هویت میشود و به گوگل میگوید که این اپلیکیشن و یا این سرور اجازه دارد مخاطبین من را ببیند. سپس گوگل به کاربر توکن موقتی میدهد و کاربر این توکن موقت را به سرور ما میدهد.
سپس سرور این توکن را به گوگل نشان میدهد و میتواند به اطلاعات دفترچه تلفن کاربر دسترسی داشته باشد.
این توکن دارای مدت زمان مشخصی است و فقط برای این سرور و دامنه اینترنتی خاص تولید شده تا مورد سو استفاده قرار نگیرد.
منابع: