كيفية نقل البيانات بشكل آمن إلى/من خدمة الويب العامة

StackOverflow https://stackoverflow.com/questions/4213663

سؤال

تطبيق أعمل على واجهات مع تطبيق موجود يعمل على مربع بعيد. Communicaitons مع التطبيق البعيد هي عبر خدمات الويب العامة. لقد طُلب مني إنشاء تحسين يتضمن عميلًا يستخدم خدمة الويب للتعامل مع البيانات الحساسة التي ستحتاج إلى نقلها بشكل آمن.

هل يمكن لأي شخص أن يعطيني بعض المؤشرات حول أفضل طريقة للمتابعة؟

هل كانت مفيدة؟

المحلول

للبدء ، يجب أن تستخدم SSL ورفض أي طلبات لا تستخدمه. سيؤدي ذلك إلى تشفير البيانات أثناء نقلها عبر الإنترنت.

إذا كنت تستخدم SOAP ، فيمكنك تحديد رأس مخصص في خدمتك التي تأخذ اسم مستخدم / كلمة مرور. ثم ، بالنسبة للسطر الأول في كل طريقة عامة ، تحقق من صحة اسم المستخدم وكلمة المرور مقابل قاعدة بيانات. إذا نجحت ، فقم بتعيين httpcontext.current.user بشكل مناسب ، وسوف ترتبط خدمتك بشكل جيد مع البنية التحتية المدمجة في ASP.NET.

إضافة: فيما يلي عينة من soapheader تتضمن اسم مستخدم / كلمة مرور للمصادقة.

// define the header
public class AuthenticationHeader : SoapHeader
{
    public String UserName { get; set; }
    public String Password { get; set; }
}

// your service
public class PublicWebService : WebService
{
    // defines an instance of the header as part of the service
    public AuthenticationHeader Authentication;

    private void Authenticate()
    {
        // validate the username / password against a database
        // set the HttpContext.Current.User if successful.
        // Maybe throw a SoapException() if authentication fails
    }

    // Notice the SoapHeader("Authentication") attribute...
    // This tells ASP.Net to look for the incoming header for this method...
    [WebMethod]
    [SoapHeader("Authentication")]
    public void PublicMethod1()
    {
        Authenticate();

        // your code goes here
    }

    // Expose another method with the same authentication mechanism
    [WebMethod]
    [SoapHeader("Authentication")]
    public void PublicMethod2()
    {
        Authenticate();

        // your code goes here
    }
}

الآن ، إذا قمت بتشغيل أداة WSDL ، فسيتضمن فئة الوكيل التي تم إنشاؤها رأس المصادقة المحدد:

PublicWebService s = new PublicWebService();
s.Authentication = new AuthenticationHeader();
s.Authentication.UserName = "xxxxxxxx";
s.Authentication.Password = "yyyyyyyy";
s.PublicMethod1();
s.PublicMethod2();

نصائح أخرى

طريق DIY:

  1. اقرأ على الأمان (ابدأ بـ "الأسرار والأكاذيب"وغيرها من الكتب العامة قبل الانتقال إلى التقنيات)

  2. إجراء تحليل المخاطر وتقييم الخيط. فهم ما تحميه ومن ماذا ، ومن أين ستأتي التهديدات. من غير المرجح أن تحتاج إلى "أمن مرتفع"1.

  3. استخدم TLS (AKA SSL).

  4. في العميل ، تحقق من صحة شهادة الخادم.

طريق أفضل: توظيف خبير يتمتع بسمعة طيبة لمساعدتك.


1 ما لم تكن حقًا تقوم ببناء مصنع للأسلحة النووية أو ما شابه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top