الثلاثاء، 20 أكتوبر 2015

الخطأ Keyset does not exist exception


إحدى الطرق لتطبيق الحماية لخدمات الويب المطبقة باستخدام تقنية WCF هي من خلال استخدام الشهادات الموثقة Authorized Certificates وذلك من خلال تطبيق الإعدادات التالية ضمن ملف الـ web.config

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="BasicHttpBinding_IActiveDirectoryService">
        <security mode="TransportWithMessageCredential">
          <message clientCredentialType="Certificate" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
  <client>

    <endpoint address="https://[URL]/ActiveDirectoryService.svc"
              binding="basicHttpBinding"
              bindingConfiguration="BasicHttpBinding_IActiveDirectoryService"
              behaviorConfiguration="customBehavior"
              contract="IActiveDirectoryService"
              name="BasicHttpBinding_IActiveDirectoryService" />

  </client>

  <behaviors>
    <endpointBehaviors>
      <behavior name="customBehavior">
        <clientCredentials>
          <clientCertificate findValue="services-p"
                             x509FindType="FindBySubjectName"
                             storeLocation="LocalMachine" storeName="My" />
          <serviceCertificate>
            <authentication certificateValidationMode="ChainTrust" />
          </serviceCertificate>
        </clientCredentials>
      </behavior>
    </endpointBehaviors>
  </behaviors>

</system.serviceModel>

يجب الانتباه إلى قيمة الخاصية findValue للعنصر clientCertificate فهي تعبر عن اسم الشهادة التي تم تثبيتها على الجهاز، طبعاً هذه الإعدادات تعتمد على معلومات الشهادة الموثقة التي حصلت عليها.

المهم أنه في بعض الأحيان يظهر الخطأ التالي:

Keyset does not exist exception

أحد أسباب هذا الخطأ هي أن الحساب الخاص بالموقع على IIS Application Pool ليس لديه صلاحية للوصول إلى المفتاح الخاص Private Key الخاص بالشهادة، ولحل هذه المشكلة يجب اتباع الخطوات التالية:

1 – افتح الأداة MMC كما يلي




2 – أضف الأداة Certificates كما يلي:







3 – من خلال الأداة Certificates اختر الشهادة المناسبة وبالضغط على زر الفأرة الأيمن اختر All Tasks ومن ثم Manage Private Keys وأعطي حساب الـ IIS Application Pool الصلاحيات المناسبة.

الخطوات السابقة يجب أن تحل المشكلة السابق.

استمتع بالأفضل




ليست هناك تعليقات:

إرسال تعليق