PDA

View Full Version : حرفه ای: دسترسی به web api تنها با استفاده از کد نویسی و login از طریق کد



mehdin69
جمعه 01 آبان 1394, 15:51 عصر
سلام دوستان
من یه app دارم که به یه تعداد web api متصل میشه
حالا مشکلم اینه که میخوام فقط برنامه خودم قابلیت دسترسی به این web api ها رو داشته باشه و بقیه اصلاً نتونن بیان web api های من رو ببینن
برای اینکه دسترسی بقیه رو از web api را بگیرم باید چکار کنم؟
مرسی

hadi0x7c7
جمعه 01 آبان 1394, 23:59 عصر
EnableCORS فک کنم ...
یا کلا بیاید api های خودتون رو امن کنید که درخواست هایی که یه توکن خواص رو دارن بتونن به اون دسترسی پیدا کنن ..

http://stackoverflow.com/questions/11775594/how-to-secure-an-asp-net-web-api

mehdin69
شنبه 16 آبان 1394, 20:37 عصر
سلام
مرسی از جوابتون
اره همین هست اما یک مشکل
مشکل من ایه که نمیدونم از چه وب سایت ها و سرور هایی به web api وصل میشن
خلاصه بگم
دارم برنامه رو روی phone gap مینویسم و همین مسئله باعث میشه device های مختلفی به web api ها دسترسی داشته باشن
مشکلم تا یه جایی حل شد که مطمئن شدم web api رو میشه مدیریت کرد اما حالا می خوام کسایی بتونن از web api های من استفاده کنن که یا از device استفاده میکنن یا از طریق خود سایت کار میکنن ...
که گزینه خود سایت با همین راه حل شما حل شد.
برای device ها چکار کنم به نظرتون؟
مرسی

مهدی کرامتی
یک شنبه 17 آبان 1394, 04:17 صبح
سلام

اینجا را ببینید:
https://stormpath.com/blog/the-ultimate-guide-to-mobile-api-security/

ali_72
یک شنبه 17 آبان 1394, 07:31 صبح
سلام

اینجا را ببینید:
https://stormpath.com/blog/the-ultimate-guide-to-mobile-api-security/

منم با تمام تحقیقاتی که انجام دادم اخرش همین راه رو انتخاب کردم jwt

mehdin69
یک شنبه 17 آبان 1394, 13:36 عصر
سلام مجدد
مرسی ازتون
خب چطوری اجرا میشه؟
این مثال رو دارم کار میکنم روش نمیشه
https://github.com/jamiekurtz/JwtAuthForWebAPI
و این ارور رو میده
More than one certificate with store 'My' and location 'LocalMachine' and SubjectName 'CN=JwtAuthForWebAPI Example' found.
حتی این قسمت رو هم اجرا کردم

To create the certificate used in this sample code:


Open the "Developer Command Prompt for VS2013" (as Administrator) from the Windows Start Menu
Run the following command to create the certificate:
makecert -r -n "CN=JwtAuthForWebAPI Example" -sky signature -ss My -sr localmachine

Then run this command to copy the new self-signed certificate into your machine's Trusted Root store:
certmgr /add /c /n "JwtAuthForWebAPI Example" /s /r localmachine My /s /r localmachine root

At this point, the client and server code will be able to utilize the certificate for token signing and validation.
چکار کنم به نظرتون؟
یا یک مثال خوب برای اینکار ندارید؟

mehdin69
یک شنبه 17 آبان 1394, 18:27 عصر
این موضوع حل شد و پروژه اجرا میشه اما مشکل اینه که حالا که دستورات رو Run میکنم و Controller رو صدا میزنم نمیتونم خروجی بگیرم و همش توی خروجی این پیغام رو میده
This XML file does not appear to have any style information associated with it. The document tree is shown below.

<Error>
<Message>Authorization has been denied for this request.</Message>

</Error>
چکار کنم که خودم بتونم خروجی بگیرم ؟؟؟
و اینکه الان این مثالی که گذاشتم باید توی Developer Command دستوراتی رو بزنم تا اجازه اجرای این api به من داده بشه حالا توی بقیه گوشی ها اگه این API ها رو بخوام صدا بزنم اروری ندارم؟
مرسی از لطفتون

ali_72
دوشنبه 18 آبان 1394, 13:24 عصر
من وب سرویس ها رو تو postman اجرا میگیرم

در همه قسمت هایی میخوای دسترسی عمومی نداشته باشه و نیاز به لاگین داشته باشه authorize بذار
که وقتی بدون لاگین بخوای اجرا کنی همین خطا
Authorization has been denied for this request رو میگیری
وقتی از jwt استفاده میکنی لاگین token base داری
در این روش در پست من با استفاده از http://mydomain.com/token لاگین کن
بهت یه کلید میده که در سایر وب متودها این کلید را معرفی میکنی تا autoriz شما تائید و اجازه استفاده از وب سرویس را داشته باشی
هم اندروید و هم ios میتونن با استفاده از این روش لاگین انجام بدهند
اگه سمت اپلیکیشن لاگین نکرده باشند خطا دریافت میکنند