2012-04-30 12 views
6

मुझे अंतर्निहित डब्ल्यूसीएफ प्रमाणीकरण का विस्तार करने की आवश्यकता है, इसलिए मेरे नए व्यक्ति को अंतर्निहित लोगों के साथ-साथ काम करना चाहिए।डब्ल्यूसीएफ प्रमाणीकरण का विस्तार

उदाहरण के लिए, मैं पंजीकृत आईपी (कस्टम ऑथ) या उपयोगकर्ता नाम + पासवर्ड (अंतर्निहित ऑथ) से एक्सेस की अनुमति देना चाहता हूं।

मैंने सफलतापूर्वक ServiceAuthenticationManager और ServiceAuthorizationManager लागू किया है।

ServiceAuthenticationManager.Authenticate बस संदेश गुणों के IPrincipal कार्यान्वयन, आवक संदेश गुणों से ServiceAuthorizationManager.CheckAccessCore प्रतियां IPrincipalAuthorizationContext गुण बढ़ जाता है।

हालांकि, ServiceAuthenticationManager.Authenticate मानक तंत्र के लिए पूरी तरह से टूटा हुआ है, भले ही मैं authPolicy या base.Authenticate कॉल का परिणाम देता हूं।

शायद मैं गलत दिशा में गया था? मौजूदा डब्ल्यूसीएफ प्रमाणीकरण जोड़ने का सही तरीका क्या है, मौजूदा लोगों को प्रभावित नहीं? कस्टम विफल होने पर अंतर्निहित प्रमाणीकरण में फ़ॉलबैक कैसे करें?

उत्तर

0

सही दृष्टिकोण:

OnOpening में सेटअप ServiceHost ओवरराइड

Authorization.PrincipalPermissionMode = PrincipalPermissionMode.Custom; 
Authorization.ExternalAuthorizationPolicies = new ReadOnlyCollection<IAuthorizationPolicy>(new[] { new MyCustomAuthorizationPolicy() }); 

कस्टम नीति का मूल्यांकन विधि में पहचान का संग्रह करने के लिए मूल्यांकन संदर्भ "PrimaryIdentity" IIdentity के तीन गुण निर्दिष्ट करते हैं, "पहचान" और IP प्रिंसिपल के लिए "प्रिंसिपल"

evaluationContext.Properties["PrimaryIdentity"] = identity; 
evaluationContext.Properties["Identities"] = new List<IIdentity>(new[] { identity }); 
evaluationContext.Properties["Principal"] = principal; 
संबंधित मुद्दे