0 امتیاز
قبل در برنامه نویسی توسط (4 امتیاز)
ویرایش شده قبل توسط

ما برای احراز هویت در یک پروژه .Net از CAS استفاده می کنیم. معماری پروژه به این صورت است که یک پورتال داریم که با استفاده از ASP.Net MVC نوشته شده و مستقلا هاست شده و چند سری RESTFull API که با ASP.Net WEB API تولید شده است و هر کدام به صورت مستقل هاست شده اند.

در حال حاضر پورتال ما با استفاده از DotNetCasClient با CAS تجمیع شده و کار می کند. الان ما نیاز داریم که REST Api های ما که از  سمت کلاینت فراخوانی میشوند، نیز با CAS تجمیع شده و احراز هویت آن انجام شود. 

مسئله اصلی اینجاست که DotNetCasClient در پروژه های ASP.Net WEB Api به درستی عمل نمیکند. برای رفع این مشکل آیا این امکان وجود دارد که وقتی در پورتال احراز هویت صورت گرفت و ticket اخذ شد، با مکانیزمی این ticket را به REST Api ها ارسال کنیم و REST Api با استفاده از این ticket احراز هویت را انجام دهد؟

1 پاسخ

+1 امتیاز
قبل توسط (1.2هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

یک راه حل کلی برای اتصال به CAS استفاده از ماژول mod_auth_cas روی آپاچی است. به طور معمول از یک وب سرور apache یا nginx جلوی web application ها استفاده می شود. می توانید آپاچی را با استفاده از ماژول فوق الذکر به cas متصل کنید. در آن صورت کافی است کاربر جاری را از روی header ای با نام REMOTE_USER بخوانید و هیچ کاری برای اتصال به cas در application انجام نمی دهید.

البته بهتر است این مکانیزم را در کنار سایر مکانیزمهای فعلی و با رعایت احتیاطهای امنیتی فعال کنید. مثلا فقط اگر از طریق یک پرت خاص که تنها در دسترسی سرور آپاچی است به app متصل شدند آن header را بخوانید و گرنه به سادگی کاربر با ارسال یک header شما را فریب خواهد داد.

ضمنا توجه کنید که mod_auth_cas از پراکسی تیکت پشتیبانی نمی کند و اگر آن را لازم دارید باید خودتان در app پشتیبانی اش کنید. البته چون مکانیزم proxy ticket به صورت stateless می باشد مشکلی نخواهید داشت.

نکته مثبت دیگر استفاده از آپاچی آن است که چون کلیت apache به عنوان یک cas client محسوب می شود مشکلاتی که در اولین اتصال کاربر به هر app در اثر redirect پیش می آید مثلا درخواستهای از نوع post پس از redirect خراب میشوند دیگر وجود نخواهند داشت.

قبل توسط (4 امتیاز)
سلام
در این روش دسترسی به serviceTicket چگونه است؟ با توجه به اینکه برای گرفتن proxyTicket به آن نیاز  داریم.
قبل توسط (1.2هزار امتیاز)
اگر به proxyTicket نیاز دارید شاید بهتر باشد سراغ آپاچی نروید.

سوالات مشابه

+1 امتیاز
1 پاسخ 1.9هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط shamstabrizi (505 امتیاز)
0 امتیاز
1 پاسخ 341 بازدید
0 امتیاز
1 پاسخ 566 بازدید
+2 امتیاز
1 پاسخ 3.3هزار بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط java_ (778 امتیاز)
0 امتیاز
0 پاسخ 394 بازدید
0 امتیاز
0 پاسخ 296 بازدید
+1 امتیاز
1 پاسخ 1.0هزار بازدید
+1 امتیاز
1 پاسخ 893 بازدید
...