كيف يمكنني إخبار فئة وكيل عميل WCF باستخدام مصادقة Windows و Windowsprincipal لمستخدم المجال الذي تم تسجيله بالفعل كبيانات اعتماد؟

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

سؤال

لقد حصلت على عميل WPF Windows يقوم باستدعاء خدمة الويب WCF. تم تسجيل الدخول بالفعل على المستخدم على مجال Windows قبل بدء تشغيل التطبيق وتستخدم خدمة WCF مصادقة Windows.

أريد أن يستخدم عميل WPF Windowsprincipal للمستخدم الذي تم تسجيله بالفعل عند الاتصال بخدمة WCF. لا أرغب في إنشاء مثيل جديد لـ NetworkCredential مع اسم مستخدم وكلمة مرور صريحة للقيام بذلك ، ببساطة لأن مطالبة المستخدم بتسجيل الدخول مرتين (في Windows والتطبيق) ... مستخدم جيدًا غير ودي.

معظم العينات التي رأيتها تستخدم هذه الطريقة لتعيين بيانات الاعتماد ، وهذا ليس ما أريد

serviceClientProxy.ClientCredentials.Windows.ClientCredential
= new NetworkCredential("username", "password", "domain");

بدلاً من ذلك ، أود أن أفعل شيئًا كهذا

serviceClientProxy.ClientCredentials.Windows.AllowedImpersonationLevel
    = TokenImpersonationLevel.Identification;
serviceClientProxy.ClientCredentials.Windows.ClientCredential
    = { /* network credential for already logged in user */ }

وهذا هو ، أريد شبكة محددة للأجهزة الموجودة بالفعل (والعمل)

new WindowsPrincipal(WindowsIdentity.GetCurrent())

لا أحد يعرف كيفية القيام بذلك؟ لقد حاولت الإعداد security mode = "" والنقل clientCredentialType = "" في app.config ، ولكن حتى الآن دون جدوى.

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

المحلول

شيئان. تأكد من تعيين خدمة WCF الخاصة بك للسماح لبيانات اعتماد Windows. بمجرد تأكيد أنك يجب أن تكون قادرًا على تكوين عميلك لاستخدام نوع بيانات اعتماد Windows. مثال (من MSDN) أدناه.

WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Message;
myBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;

نصائح أخرى

في app.config:

  • يضيف:

    <system.net>
      <defaultProxy useDefaultCredentials="true"></defaultProxy>
    </system.net>
    
  • في الربط الخاص بك في العناصر الربط/الأمان/النقل ، قم بتعيين proxycreditaltype = "NTLM"

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