PDA

View Full Version : روش مناسب برای Authentication در Web Service



amin_alexi
سه شنبه 11 فروردین 1388, 14:28 عصر
سلام
من دنبال یک روش مناسب و برای احراز حویت در Web Service هستم
من این روش رو پیدا کردم می خوام ببینم این برای یک برنامه تحت شبکه داخلی یک شرکت کفایت می کنه
در Web Service من جلوی متد مورد نظر [WebMethod(EnableSession=true)] رو گذاشتم تا از Session در Web Service استفاده کنم این هم یک مثال به عنوان نمونه که دو متد رو گذاشتم که پس از وارد کردن User و Pass در Session مقدار loggedIn رو True می کنم و در فراخونی متد HelloWorld ون مقدار رو Check می کنم


[WebMethod(EnableSession=true)]
public string HelloWorld() {
if (Convert.ToBoolean(Session["loggedIn"]))
return "Hello World";
else
return "LogIn please";
}
[WebMethod(EnableSession = true)]
public bool Authenticate(string UserName,string Password)
{
if (UserName=="a" && Password =="b")
{
Session["loggedIn"] = true;
return true;
}
return false;
}


حالا اگه دوستان نظر بهتری دارن ممنون میشم راهنمایی کنند

xamfia
چهارشنبه 12 فروردین 1388, 14:18 عصر
شاید شما قصد استفاده از این سرویس در صفحاتی غیر از asp.net را دارید.
اما اگر می خواستید از این توابع در asp.net بهره ببرید به نظر من استفاده از membership خود asp.net است که برای فراخوانی متد هایتان نیز می توانید از آژاکس استفاده کنید به نظر من این روش امن تر و اصولی تر است(مخصوصا در بحث Authentication).
در ضمن من در کار با session در webservice همیشه به مشکل برخورد می کردم یعنی بسیاری از وقت ها sessionها خودشان در مراجعات بعدی مقدارشان نامعتبر میشد!!!

amin_alexi
چهارشنبه 12 فروردین 1388, 17:55 عصر
شاید شما قصد استفاده از این سرویس در صفحاتی غیر از asp.net را دارید.
ا
بله من می خوام در سمت Client از Win Form استفاده کنم ... حالا آیا این روش درسته ؟ یا نه ؟
یا از دوستان کسی هست که روش دیگری پیشنهاد بده !

xamfia
شنبه 15 فروردین 1388, 10:53 صبح
البته دوست من ناگفته نماند استفاده شما از سرویس ها نمی تواند دلیلی بر عدم استفاده شما از membership باشد.به این معنی که شما می توانید در توابع سرویسی که برای احراز هویت استفاده می کنید از توابع شناسایی Membership بهره بجوئید.
اما مشکلی که می ماند این است که چگونه user $ pass را با سرویس ارسال کنیم که لو نرود.با توجه به این که ما از xml برای انتفال استفاده میکنیم برنامه ما امنیت پائینی خواهد داشت.
آیا کسی برای حل این مشکل راهی دارد؟؟؟
البته در برنامه های WinApp اینکار ساده تر است بطوری که شما می توانید در سمت کاربر کلمه عبور و رمز را با الگوریتم خاص خودتان کد و یا هش کرده و در سمت سرور آنرا decode کنید.
بدین صورت حتی اگر کسی در میانه راه داده ها را شنود کند قادر به خرابکاری نخواهد بود!!

arashmidos2020
یک شنبه 29 آذر 1388, 06:05 صبح
اساتید اگر در بحث امنیت انتقال داده روی http مطلب بیشتری دارند بگویند.
ممنون

xamfia
دوشنبه 30 آذر 1388, 01:01 صبح
اساتید اگر در بحث امنیت انتقال داده روی http مطلب بیشتری دارند بگویند.
ممنون
یک راه دیگر برقراری امنیت برای سرویس های وب تحت http استفاده از header های soap میباشد


[WebMethod]
[SoapHeader("Authent",Required=true)]
public string MyWebMethod(string Name)
{
if (Authent.UserName == "Meysam" && Authent.Password == "123400")
return "Authentiocation is succesfull(Welcome {"+Name+"})";
else
return "Authentiocation is fail";
}

با چیزی شبیه این کد میتواننید یک تابع سرویس را ملزم به استفاده از header های soap کنید