2013-07-03 7 views
13

मेरे पास OWIN का उपयोग कर एक स्व-होस्टेड SignalR एप्लिकेशन है। मैं आने वाले अनुरोधों में विंडोज प्रमाणीकरण जोड़ना चाहता हूं। क्या यह संभव है?सिग्नलआर और ओविन स्वयं-होस्टिंग के साथ विंडोज प्रमाणीकरण

मेरा मानना ​​है कि मैं उदा। प्रपत्र प्रमाणीकरण via something like this

हालांकि मुझे ऐसा कुछ करने के लिए विंडोज प्रमाणीकरण का उपयोग करने का कोई तरीका नहीं मिल रहा है।

मेरी फॉलबैक योजना आईआईएस में होस्ट करने के लिए होगी, लेकिन अगर मैं कर सकता हूं तो मैं अपने ऐप को विंडोज सेवा के रूप में रखने में सक्षम होना पसंद करूंगा।

उत्तर

24

आदर्श रूप में वहाँ middlware Owin एक NTLM होगी लेकिन आप इसे चारों ओर HttpListener पर एक संभाल रही है और प्रमाणन कि जिस तरह से सक्षम करने से काम कर सकते हैं के बाद से कोई नहीं है (यह मूल रूप से HttpListener द्वारा समर्थित है):

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     var listener = (HttpListener)app.Properties[typeof(HttpListener).FullName]; 
     listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm; 

     app.MapHubs(); 
    } 
} 
+0

धन्यवाद! ऐसा लगता है कि यह चाल चल रहा है। अब मुझे एक और समस्या हो रही है कि एनटीएलएम ऑथ सक्षम होने के साथ मुझे 'एक्सेस-कंट्रोल-ऑब्जेक्ट-ओरिजिनिन' त्रुटि मिलती है। ऐसा लगता है कि यह शायद [यहां] (https://github.com/SignalR/SignalR/issues/1735) तय हो गया है, इसलिए जब मुझे इसका परीक्षण करने के लिए एक पल हो तो मुझे नवीनतम सिग्नलर बिल्ड प्राप्त करने का प्रयास करना होगा। –

+0

मुझे लगता है कि आप क्रॉस डोमेन सक्षम करते हैं। इसे पढ़ें http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#crossdomain – davidfowl

+0

हां, मुझे लगता है कि मुझे यह सब ठीक मिला है - निश्चित रूप से यह काम करता है अगर मैं टिप्पणी करता हूं 'प्रमाणीकरण स्केम्स' लाइन से बाहर। मैंने एक [अलग प्रश्न] उठाया है (http://stackoverflow.com/questions/17485046/signalr-cross-domain-connections-with-self-hosting-and- प्रमाणीकरण) क्योंकि ऐसा लगता है कि यह एक अलग मुद्दा है। –

3

मैं आपके जैसा ही समस्या का सामना कर रहा था, और एनटीएलएम/विंडोज प्रमाणीकरण मिडलवेयर को लागू करने का फैसला किया;

आप Nuget पर इसे पा सकते हैं:

Install-Package Pysco68.Owin.Authentication.Ntlm 

सूत्रों का कहना है और कैसे-करने के लिए उपयोग में अधिक विस्तृत जानकारी इसे यहाँ awailable हैं:

public void Configuration(IAppBuilder app) 
{ 
    // use default sign in with application cookies 
    app.SetDefaultSignInAsAuthenticationType(
     DefaultAuthenticationTypes.ApplicationCookie); 

    app.UseCookieAuthentication(new CookieAuthenticationOptions() 
    { 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie     
    }); 

    // Enable NTLM authentication 
    app.UseNtlmAuthentication(); 

    // ..... 
} 
: https://github.com/pysco68/Pysco68.Owin.Authentication.Ntlm

न्यूनतम उपयोग के उदाहरण की तरह लग रहे हो सकता है

कृपया ध्यान दें कि प्रदर्शन कारणों से मैंने अंत में कुकी प्रमाणीकरण के साथ चिपकने का निर्णय लिया और प्रारंभिक प्रमाणीकरण ro के लिए NTLM का उपयोग करने का निर्णय लिया अन-यात्रा (अनुरोधों की उच्च संख्या के कारण)।

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