با سلام
من یک وب سرویس دارم و باید در برنامه ی کلاینت در ویندوز یوزر و پسورد را بگیرم و سپس به وب سرویس ارسال کنم(نوعی تعیین هویت)
جطوری میشه؟
با تشکر
با سلام
من یک وب سرویس دارم و باید در برنامه ی کلاینت در ویندوز یوزر و پسورد را بگیرم و سپس به وب سرویس ارسال کنم(نوعی تعیین هویت)
جطوری میشه؟
با تشکر
در وب سرویس یک تابع تعریف کن که آی دی و پسورد را بگیرد و پردازش کند.
سپس در برنامه ی کلاینت که مصرف کننده ی وب سرویس است به سادگی این تابع وب سرویس را صدا بزن و به آن پارامتر پاس کن.
خوب حالا چطوری دسترسی به یک سری بخشهای خاص در وب سرویس را با توجه به این Username/Pass محدود کنم؟
بعبارت بهتر دسترسی به بعضی بخشهای وب سرویس نیازمند Login باشد؟
فرض کنید یوزر ها همه ثبت نام کرده اند و دارای username و پسورد هستند.
شما یک تابع login به صورت WebMethod تعریف می کنید که در کلاینت قابل دسترسی باشد.
این تابع bool بر می گرداند ( یا شخص صحیح لاگین کرده یا خیر و یوزر نیم و پسورد در کلاینت وارد می شود و روی سرور پردازش).
سپس در برنامه ی کلاینت قبل از صدا زدن هر قسمتی و استفاده از هر قسمت وب سرویس باید این تابع را صدا بزنید.
( یا اینکه برای کم شدن رفت و آمد ها می شود یک صفحه ی لاگین اجباری را در اول کار گذاشت )
من میخوام Login یکبار صورت بگیره و بقیه کار در صورت Login بودن نیازی به Authentication در هر Request نداشته باشه.
باید از <Security> المنت استفاده کنی ( حالا حس و حال نوشتن مطلب مفصل نیست . اگر بعدا" بود در مورد امنیت سرویسهای وب یک مقاله مینویسم . بهر حال مطمئنم خودت بقیه اش رو میتونی در بیاری )
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
البته بحث های پیشرفته تری هم در این مورد وجود دارد (که ای اس پی دات روش خاص خودش (Authentication ) را دارد )
HTTP Security and ASP.NET Web Services
http://msdn.microsoft.com/library/de...tpsecurity.asp
http://www.ondotnet.com/pub/a/dotnet...bservices.html
http://www.codeproject.com/cs/webser...ebservices.asp
سرویسهای وب مستقل از پیاده سازی سمت سرور کلاینت هستند . قواعد اونها هم یونیک و یکتاست چه جاوا چه دلفی چه دات نت و ... فرقی نمیکنه . تشخیص هویت یا signed است یا unisigned . در مورد اول میشه به یک سیستم کلایتن سرور عضو بستری مبتنی بر PKI اشاره کرد که از X.509 Certification یا کلیدهای عبور کربراس استفاده میکنه و برای مورد دوم هم Plain Text User/pass Authentication ( که این مورد رو باید حتما" از کانالهای ایمن عبور داد و گرنه Spoofing یا hijacking میتونه فاتحه سیستم رو بخونه ) ولی اینکه احراز هویت متقارن باشه یا غیر متقارن و یا اینکه نحوه عبور اطلاعات شناسائی چطور باشه یک حرفه ، بحث Authorization یک حرف دیگه . یعنی ورای بحث شناسائی ، حالا که شناسائی حاصل شد ، میزان دسترسی ، یا محیطهای مجاز ، توابع مجاز ، کلاسهای مجاز ، و ... غیر مجاز کدامها هستند یک بحث دیگه . SecurityToken و UserElementToken عناصری هستند که توسط اونها در لایهء WSDL ایمنی سرویس مب ایجاد میشه . ( یعنی وقتی قراره استفاده کننده ، تعریف خدمات رو دریافت کنه ، فقط خدمات مجاز رو خواهد دید . این میتونه برای هر کاربر یا برای هر گواهی امنیتی- اعتباری متفاوت باشه و میشه برای هر گروه از اینها سکیوریتی المنتهای مختلف تعریف کرد ) امنیت وب سرویس فقط محدود به لایهء WSDL نیست ( یعنی تعریف سرویس ) . هنگام کاربری از سرویسها هم میشه برای توابع یا اشیاء محدودیت ایجاد کرد و ... :roll:
باشه برای یک فرصت مناسب که ما هم دپرس نباشیم
خوش باشید
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
البته با توجه به متفاوت بودن محیط اینترنت با بحث شبکه های داخلی در عمل مفاهیم مطرح شده ی بالا در ای اس پی دات نت کاربردی ندارند و در صورت نیاز یک مقاله می توانم در این زمینه ارائه دهم
برای مطالعه بیشتر دوستان می توانند به کتاب زیر فصل سکیوریتی آن مراجعه کنند
Essentials of ASP. net programming with C# examples
(لینک دانلود این کتاب در همین بخش موجود است)
(در ای اس پی دانت عملا بحث ویندوز آوتنتیکیشن (یکی از سه نوع موجود) و مباحث مرتبط با آن (هر چند وجود دارند) کاربردی ندارند)
ساختار اینترنت با شبکه های داخلی در این مورد هیچ تفاوتی ندارد . استانداردهای امنیتی مانند ساختارهای دو طرفهء احراز هویت یا تصدیق هویت ساده و معمولی همگی مبتنی بر وجود یک سرویس و انتشار یک درخواست است و نه چیز دیگه . SOAP و WSDL هم فارغ از محل کاربرد و ابزار تولید کننده و ابزار میزبان و ابزار استفاده کننده دارای ویژگیهای امنیتی خاصی هستند که در همهء محیطها قابل استفاده هستند . به عنوان مثال برای دسترسی به بانک اطلاعاتی یک دانشگاه که از داخل اینترانت با حمایت کربراس صورت میگیره و سکیوریتی المنتهای وب سرویس میزان اجازهء کاربر را مشخص میکنند ، برای دسترسی از طریق اینترنت به بانک اطلاعاتی ابتدا باید از CA دانشگاه یک گواهی درخواست کرد که گواهی مزبور هویت کاربر نرم افزار را برای وب سرویس مشخص میکند و مجددا" قواعد امنیتی در لایهء WSDL اعمال میشه .البته با توجه به متفاوت بودن محیط اینترنت با بحث شبکه های داخلی در عمل مفاهیم مطرح شده ی بالا در ای اس پی دات نت کاربردی ندارند و در صورت نیاز یک مقاله می توانم در این زمینه ارائه دهم
UNIX is simple. It just takes a genius to understand its simplicity
-- Dennis Ritchie
اگر میشه برای هر روشی یه کد مثال بیاورید
با تشکر