خدمة WCF الآمنة المستضافة في IIS 7 باستخدام مصادقة Windows مقيدة من قبل المجموعة أو المستخدمين المحددين

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

سؤال

كيفية تكوين خدمة WCF المستضافة في IIS 7 لتمكين الوصول إلى المستخدمين / المجموعات المحددة فقط إلى.

التكوين الحالي:

<authentication mode="Windows"/> 

<services>     
 <service name="MyService.Test" behaviorConfiguration="MyService.TestBehavior">
  <endpoint address="" binding="wsHttpBinding" contract="MyService.ITest">
   <identity>
    <dns value="localhost"/>
   </identity>
  </endpoint>
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
 </service>
</services>
<behaviors>
 <serviceBehaviors>
  <behavior name="MyService.TestBehavior">
   <serviceMetadata httpGetEnabled="true"/>
   <serviceDebug includeExceptionDetailInFaults="true"/>          
  </behavior>        
 </serviceBehaviors>
</behaviors>

أريد إذن تكوين أذونات (المستخدمين أو المجموعات) إما في Web.config أو في نظام الملفات على الملفات أو المجلد.

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

المحلول

بادئ ذي بدء، إذا كنت في بيئة إنترانت، فيمكنك التبديل إلى NETTCPBIDING - إنه أسرع، إنه أمر أكثر مرونة، لا أحد يستطيع الاتصال من الخارج (بعد جدران الحماية) - الكمال.

بعد ذلك - لديك بيانات اعتماد Windows قيد التشغيل بشكل افتراضي مع Wshttpbinding ومع Nettcpbinding. في عالم WCF، لن تؤمن عادة الملفات أو المجلدات - ما تأمينه هو مكالمات الخدمة - والقيام بذلك سهل مع بيانات اعتماد Windows - ما عليك سوى إضافة سمة Principalpermission إلى تطبيق الخدمة الخاص بك، وأنت انتهيت من:

class MyService : IMyService
{
  [PrincipalPermission(SecurityAction.Demand, Role="SysAdmin")]
  public void SensitiveMethod()
  {
   ....
  }
}

يجب أن تعمل على ما يرام.

إذا كنت بحاجة فعلا إلى تأمين الملفات والمجلدات، فيمكنك دائما استخدام ملف Web.config وتحديد أذونات الوصول المعتادة بناء على أسماء مستخدمي مستخدمي Windows - ولكن هذا لا علاقة له ب WCF، حقا.

مارك

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