2012-10-24 12 views
6

मैं विंडोज स्टोर XAML ऐप में क्लाइंट प्रमाणपत्र प्रमाणीकरण का उपयोग करना चाहता हूं। मेकर्ट का उपयोग करके मैंने एक स्व-हस्ताक्षरित सीए और क्लाइंट प्रमाण पत्र बनाए हैं, प्रमाणीकरण आईआईएस/एएसपी.नेट + ब्राउज़र (आईई 10, क्रोम, इत्यादि) में काम करता है। अब मैं इसे विंडोज स्टोर ऐप में उपयोग करना चाहता था, लेकिन वास्तव में प्रमाण पत्र को स्थापित करने के बारे में अनिश्चित हूं। मेरे पास एक cert.pfx फ़ाइल है जिसे मैंने IE10 में आयात किया था। यहां कोड है जिसका उपयोग मैं SSL पर HTTP सेवा का उपभोग करने के लिए करता हूं।विंडोज स्टोर XAML ऐप्स में क्लाइंट प्रमाणपत्र स्थापित करना

HttpClientHandler handler = new HttpClientHandler(); 
handler.ClientCertificateOptions = ClientCertificateOption.Automatic; 

HttpClient client = new HttpClient(handler); 

सुनिश्चित नहीं हैं कि क्या ClientCertificateOption.Automatic और ClientCertificateOption.Manual के बीच का अंतर। जब मैं प्रमाणपत्र से कनेक्ट करने का प्रयास करता हूं तो सर्वर को प्रस्तुत नहीं किया जा रहा है और मुझे 401 त्रुटि मिलती है, मुझे लगता है कि प्रमाणपत्र ऐप प्रमाणपत्र स्टोर में मौजूद नहीं है और इस प्रकार सर्वर पर कुछ भी नहीं भेजा जा रहा है। मैं फिर प्रमाणपत्र कैसे स्थापित करूं?

मैं CertificateEnrollmentManager.ImportPfxDataAsync() विधि उपयोग करना चाहिए? यदि हां, तो मैं .pfx को 'बेस 64-एन्कोडेड पीएफएक्स संदेश' में परिवर्तित कैसे कर सकता हूं क्या पीएफएक्स में निजी कुंजी होनी चाहिए?

या यहां बताए अनुसार शायद मैं प्रमाण पत्र एक्सटेंशन का उपयोग करना चाहिए: http://msdn.microsoft.com/en-us/library/windows/apps/hh464981.aspx#certificates_extension_content

उत्तर

6

निम्नलिखित कोड एक pfx फ़ाइल लोड और एक बेस 64 इनकोडिंग स्ट्रिंग कि ImportPfxDataAsync विधि द्वारा इस्तेमाल किया जा सकता पैदा करेगा:

StorageFolder packageLocation = Windows.ApplicationModel.Package.Current.InstalledLocation; 
StorageFolder certificateFolder = await packageLocation.GetFolderAsync("Certificates"); 
StorageFile certificate = await certificateFolder.GetFileAsync("YourCert.pfx"); 

IBuffer buffer = await Windows.Storage.FileIO.ReadBufferAsync(certificate); 
string encodedString = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer); 

यह मान लें कि आपने अपना प्रमाण पत्र 'प्रमाण पत्र' फ़ोल्डर में रखा है।

आप http://www.piotrwalat.net/client-certificate-authentication-in-asp-net-web-api-and-windows-store-apps/ पर एक नज़र डालना चाहते हैं, यह एएसपीनेट वेब एपीआई के साथ संवाद करने के लिए विंडोज 8 ऐप में क्लाइंट प्रमाणपत्रों का उपयोग करने के अंत-से-अंत परिदृश्य के माध्यम से चलता है।

संबंधित मुद्दे