ورود

View Full Version : سوال: نحوه احراز هویت Client ها به Web Api



jaykob
پنج شنبه 29 بهمن 1394, 13:21 عصر
سلام


من در حال یادگیری web api هستم . موردی رو که می خوام بدونم و توی چند مقاله ای که خوندم متاسفانه پیدا نکردم این موضوع هست که ما یک web api طراحی می کنیم و می خواهیم این سرویس را به مثلا ۲۰ شرکت بدهیم اما هر کدام از این شرکت ها یک دسترسی دارند و اینکه نمی خواهیم اگر مستندات سرویس ما را کس دیگه ای داشت به آن دسترسی داشته باشه به این دلیل ما باید یک نام کاربری و رمز عبور به این شرکت ها بدهیم که برای گرفتن سرویس احراز هویت بشوند . این مورد رو می خوام با کد بدونم دقیقا چطور این کار انجام بشه و اینکه client ها به چه صورت باید ( چه کدی ) این نام کاربری و رمز عبور را بدهند تا سرویس ما به آنها داده شود . در WCF می دونم چطور این کار انجام می شه اما web api خیلی گیج هستم داخل این موضوع . ممنون می شم راهنمای جامعی بکنید

با تشکر

hakim22
پنج شنبه 29 بهمن 1394, 14:39 عصر
بهترین روش استفاده از Token است. شما با ارسال نام کاربری و رمز عبور به آدرس www.mysite.com/token (http://www.mysite.com/token) یک نشان امنیتی دریافت می کنید.
(البته این درصورتی که Middleware مروبطه را با OWIN فعال کنید . به پروژه ی خام ویژوال استودیو مراجعه کنید)
بعد با هر درخواستی که به سرور ارسال می کنید باید این نشان را درون header درخواست ارسال کنید.
عمل Authorize در Web Api نشان را از هدرهای دریافتی استخراج میکند و هویت کاربر را تشخیص میدهد.

اگر از پروژه خام ویژوال استودیو استفاده کنید نیاز به تنظیم خاصی ندارید و این سیستم روی پروژه قبلا سوار شده است.
دقت کنید که برای ارسال نام کاربری و رمز عبور باید از فرمت فرمهای HTML استفاده کنید و از JSON پشتیبانی نمیکند.

همچنین استفاده از این سیستم بدون HTTPS و SSL ضریب امنیت سیستم را به شدت پایین می آورد.

اگر از Api در کنار سایت اصلی استفاده می کنید نیاز به ارسال و دریافت token ندارید. وقتی کاربر با صفحه ی ورود به سایت لوگین می کند در Web Api هم وارد شده است و می تواند از متدهای آن استفاده کند. روش بالا برای برنامه های ویندوز یا اپلیکشن های جاوا اسکریپت ، نرم افزارهای گوشی و ... مناسب است.

r4hgozar
شنبه 01 اسفند 1394, 03:26 صبح
سلام.
اقای حکیم دقیق توضیح دادن.
اما من توصیه می کنم کتاب Expert ASP.NET Web API 2 for MVC Developers رو بخونین.
در فصل 6 بصورت خلاصه میاد توضیح میده و این کد ها رو می نویسه. اما در فصل های بعدی میاد و صورت مساله رو باز می کنه و کامل تر می کنه توضیحات رو.
موفق باشید

jaykob
شنبه 01 اسفند 1394, 05:58 صبح
بهترین روش استفاده از Token است. شما با ارسال نام کاربری و رمز عبور به آدرس www.mysite.com/token (http://www.mysite.com/token) یک نشان امنیتی دریافت می کنید.
(البته این درصورتی که Middleware مروبطه را با OWIN فعال کنید . به پروژه ی خام ویژوال استودیو مراجعه کنید)
بعد با هر درخواستی که به سرور ارسال می کنید باید این نشان را درون header درخواست ارسال کنید.
عمل Authorize در Web Api نشان را از هدرهای دریافتی استخراج میکند و هویت کاربر را تشخیص میدهد.

اگر از پروژه خام ویژوال استودیو استفاده کنید نیاز به تنظیم خاصی ندارید و این سیستم روی پروژه قبلا سوار شده است.
دقت کنید که برای ارسال نام کاربری و رمز عبور باید از فرمت فرمهای HTML استفاده کنید و از JSON پشتیبانی نمیکند.

همچنین استفاده از این سیستم بدون HTTPS و SSL ضریب امنیت سیستم را به شدت پایین می آورد.

اگر از Api در کنار سایت اصلی استفاده می کنید نیاز به ارسال و دریافت token ندارید. وقتی کاربر با صفحه ی ورود به سایت لوگین می کند در Web Api هم وارد شده است و می تواند از متدهای آن استفاده کند. روش بالا برای برنامه های ویندوز یا اپلیکشن های جاوا اسکریپت ، نرم افزارهای گوشی و ... مناسب است.

سلام

خیلی ممنون از شما به خاطر پاسخ خوبتون الان متوجه روند شدم .

شما فرض رو بر این موضوع بگیرید که ما از پروژه پیش فرض ویژوال استودیو استفاده می کنیم و این موضوع نیاز به تنظیم خاصی نداره . اگر امکانش هست با کد نویسی بفرمایید که من کاربران رو کجا می تونم تعریف کنم و نام کاربری و رمز عبور اختصاص بدم بهشون ؟

نکته بعد اینه که ما اگر خودمان برای تست کار به عنوان یک client بخواهیم به سرویس وصل بشویم در کد چطور باید این token رو ایجاد کنم و هر بار در header به سرور ارسال کنیم ؟

این مورد هم برای اینکه همه بتونن این این سرویس استفاده کنند و محدود به خود برنامه نباشه یعنی در یک برنامه ویندوزی هم بشه استفاده کرد .

در حقیقت اگر امکانش هست روند رو به همراه کد می خوام که یک نمونه کوچک رو پیاده سازی کنم

تشکر و احترام

moin008
دوشنبه 15 آذر 1400, 20:43 عصر
سلام

خیلی ممنون از شما به خاطر پاسخ خوبتون الان متوجه روند شدم .

شما فرض رو بر این موضوع بگیرید که ما از پروژه پیش فرض ویژوال استودیو استفاده می کنیم و این موضوع نیاز به تنظیم خاصی نداره . اگر امکانش هست با کد نویسی بفرمایید که من کاربران رو کجا می تونم تعریف کنم و نام کاربری و رمز عبور اختصاص بدم بهشون ؟

نکته بعد اینه که ما اگر خودمان برای تست کار به عنوان یک client بخواهیم به سرویس وصل بشویم در کد چطور باید این token رو ایجاد کنم و هر بار در header به سرور ارسال کنیم ؟

این مورد هم برای اینکه همه بتونن این این سرویس استفاده کنند و محدود به خود برنامه نباشه یعنی در یک برنامه ویندوزی هم بشه استفاده کرد .

در حقیقت اگر امکانش هست روند رو به همراه کد می خوام که یک نمونه کوچک رو پیاده سازی کنم

تشکر و احترام


در جواب این سوالتون استفاده از postman رو بهتون پیشنهاد میدم و