نمایش نتایج 1 تا 9 از 9

نام تاپیک: مشکل در فراخوانی سرویس های خارجی

  1. #1
    کاربر دائمی آواتار xamfia
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    پست
    115

    مشکل در فراخوانی سرویس های خارجی

    مشکلی که من برخورد کرده ام در فراخوانی توابع وب سرویس دیگر سایت ها با استفاده از جاوااسکریپت می باشد.
    اینطور که من فهمیده ام گویا مرورگرها اجازه اینکار را نمی دهند یعنی ما نمی توانیم از سرویس های دیگر سایت ها مستقیما در صفحات وب خودمان استفاده کنیم!!
    البته گویا در Ajax .net جدید کنترلی به نام Bridge منتشر شده که این مشکل را حل کرده.
    اگر کسی تجربه دارد لطفا راهنمایی کند.

  2. #2
    کاربر جدید آواتار reza_ghahary
    تاریخ عضویت
    آذر 1387
    محل زندگی
    تهران
    پست
    8

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    مطمئنا آدرس وب سرویس و یا آرگومانهای آن را کامل وارد نکرده ای
    وگرنه هیچ مشکلی نداره من امتحان کردم

  3. #3
    کاربر دائمی آواتار xamfia
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    پست
    115

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    دوست من اين مشكلي كه من مي گم يه كم وخيم تر(!) از اون چيزي كه تو ذهن شماست.
    problem calling external web service اين عبارات روي توي Google جستجو كنيد شايد چيز بدرد بخوري گيرتون اومد.

  4. #4
    کاربر دائمی آواتار Saeed_m_Farid
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فضای تهی میان دیوارها
    سن
    44
    پست
    1,046

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    نقل قول نوشته شده توسط xamfia مشاهده تاپیک
    اینطور که من فهمیده ام گویا مرورگرها اجازه اینکار را نمی دهند یعنی ما نمی توانیم از سرویس های دیگر سایت ها مستقیما در صفحات وب خودمان استفاده کنیم!!
    البته گویا در Ajax .net جدید کنترلی به نام Bridge منتشر شده که این مشکل را حل کرده.
    اگر کسی تجربه دارد لطفا راهنمایی کند.
    دوست عزیز،
    اگه منظورتون رو در مورد "فراخوانی سرویس های خارجی" درست متوجه شده باشم؛ این ماهیت وب سرویس ها در Authentication یا Authorize نمودن یا به عبارت دیگه حق دسترسی هست که باعث میشه نتونید به وب سرویس موردنظر دستیابی داشته باشید. معمولاً تو استفاده از وب سرویس ها یه Credential با هماهنگی توسعه دهنده وب سرویس موردنظر که نوع Authenticate رو تعیین کرده، در هنگام initial کردن داده میشه که مقدمات حق دسترسی به وب سرویس موردنظر فراهم بشه ...
    نقل قول نوشته شده توسط xamfia مشاهده تاپیک
    دوست من اين مشكلي كه من مي گم يه كم وخيم تر(!) از اون چيزي كه تو ذهن شماست.
    problem calling external web service اين عبارات روي توي Google جستجو كنيد شايد چيز بدرد بخوري گيرتون اومد.
    من مقاله وب سرویس شما رو یه نگاه گذرا انداختم (گذرا به علت کمبود وقت)، در اولین فرصت دقیق مطالعه اش می کنم، ولی اگه اشتباه نکنم، شما چیزی در مورد حق دسترسی به وب سرویس ها نذاشته بودید.
    همین امکان هست که باعث میشه یه وب سرویس خارجی (External) در مقابل حملات دوام بیاره، چون زیاد در مورد وب سرویسهای مبتنی بر جاوا اطلاع ندارم نمیدونم چطور باید این امر تو استفاده از وب سرویس اعمال بشه ولی تو وب سرویسهای مبتنی بر دات نت یه نمونه کد واسه authentication میذارم و این در صورتی هست که authentication mode روی Windows تنظیم نشده باشه یعنی مثلاً یکی از "Forms", "Passport" و "None" باشند (درصورت تنظیم شدن با مقدار Windows در Web.config خود IIS مسئولیت احراز هویت کاربران رو از طریق (Basic, Digest, or Integrated Windows) برعهده میگیره)، امیدوارم مفید واقع بشه :
    Imports System.Net
    Imports System.Text

    Public Class MyAuthenticationModule
    Implements IAuthenticationModule

    Private m_myAuthType As String = "Basic"

    Public Function Authenticate(ByVal challenge As String, ByVal request As WebRequest, ByVal credentials As ICredentials) As Authorization Implements IAuthenticationModule.Authenticate

    Dim myHttpWebRequest As HttpWebRequest = request
    Dim myIndex As Integer = challenge.ToLower().IndexOf(m_myAuthType.ToLower() )

    If (-1 = myIndex) Then Return Nothing 'Basic authentication was not the MyChallenge.

    Dim myDomain As String = credentials.GetCredential(request.RequestUri, m_myAuthType).Domain
    Dim myUserName As String = credentials.GetCredential(request.RequestUri, m_myAuthType).UserName
    Dim myPassword As String = credentials.GetCredential(request.RequestUri, m_myAuthType).Password

    Debug.WriteLine("Authentication module is invoked for " & myDomain & "\" & myUserName)

    Dim myAuthBytes() As Byte = Encoding.ASCII.GetBytes(myDomain & "\" & myUserName & ":" & myPassword)

    Dim myAuthString As String = System.Convert.ToBase64String(myAuthBytes)

    Return New Authorization(m_myAuthType & " " & myAuthString, True, "myAuth")

    End Function

    Public ReadOnly Property AuthenticationType() As String Implements IAuthenticationModule.AuthenticationType
    Get
    Return m_myAuthType
    End Get
    End Property

    Public ReadOnly Property CanPreAuthenticate() As Boolean Implements IAuthenticationModule.CanPreAuthenticate
    Get
    Return False
    End Get
    End Property

    Public Function PreAuthenticate(ByVal request As WebRequest, ByVal credentials As ICredentials) As Authorization Implements IAuthenticationModule.PreAuthenticate
    Return Nothing
    End Function
    End Class

    موفق باشید

  5. #5
    کاربر دائمی آواتار xamfia
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    پست
    115

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    سپاسگزارم دوست من.
    پاسخ های مفیدی بود.
    اگر امکان دارد کد را به صورت سی شارپ قرار دهید.

  6. #6
    کاربر دائمی آواتار Saeed_m_Farid
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فضای تهی میان دیوارها
    سن
    44
    پست
    1,046

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    نقل قول نوشته شده توسط xamfia مشاهده تاپیک
    سپاسگزارم دوست من.
    پاسخ های مفیدی بود.
    اگر امکان دارد کد را به صورت سی شارپ قرار دهید.
    کد #C برای پیاده سازی احراز هویت :
    using System;
    using System.Net;
    using System.Text;

    namespace MyAuthenticationModule
    {
    public class MyAuthenticationModule : IAuthenticationModule
    {
    private string _authType = "Basic";

    public Authorization Authenticate(String challenge, WebRequest request, ICredentials credentials)
    {
    HttpWebRequest httpWebRequest = request as HttpWebRequest;

    int index = challenge.ToLower().IndexOf(_authType.ToLower());
    if(-1 == index)//Basic authetication was not the challenge.
    {return null;}

    String domain = credentials.GetCredential(request.RequestUri, _authType).Domain;
    String username = credentials.GetCredential(request.RequestUri, _authType).UserName;
    String password = credentials.GetCredential(request.RequestUri, _authType).Password;



    byte[] authBytes = System.Text.Encoding.ASCII.GetBytes(domain + "\\" + username + ":" + password);
    String authString = Convert.ToBase64String(authBytes);

    return new Authorization(_authType + " " + authString, true, "myAuth");
    }

    public Authorization PreAuthenticate(WebRequest request, ICredentials credentials)
    {return null;}

    public String AuthenticationType
    {get{return _authType;}}

    public bool CanPreAuthenticate
    {get{return false;}}
    }
    }
    همونطورکه می بینید در حالت Basic استفاده میشه ...

    روش قدم به قدم برای پیاده سازی، پیکربندی و تست Authentication رو که از پیاده سازی IAuthenticationModule استفاده کرده؛ رو میتونید اینجا ببینید.

  7. #7
    کاربر دائمی آواتار xamfia
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    پست
    115

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    بازهم ممنون فقط این لینکی که گذاشتین کار نمی کنه.

  8. #8
    کاربر دائمی آواتار Saeed_m_Farid
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فضای تهی میان دیوارها
    سن
    44
    پست
    1,046

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    نقل قول نوشته شده توسط xamfia مشاهده تاپیک
    بازهم ممنون فقط این لینکی که گذاشتین کار نمی کنه.
    لینک چک شد و مشکلی نداره، اگه باز هم به مورد برخوردین :


    موفق باشید

  9. #9

    نقل قول: مشکل در فراخوانی سرویس های خارجی

    نقل قول نوشته شده توسط Saeed_m_Farid مشاهده تاپیک
    لینک چک شد و مشکلی نداره، اگه باز هم به مورد برخوردین :


    موفق باشید

    اگر امکان داره توضیحی در مورد چگونگی استفاده از این کد در برنامه های windows application بدین.
    آخرین ویرایش به وسیله najva82 : یک شنبه 10 بهمن 1389 در 16:51 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •