2014-04-29 9 views
8

मैं OAuth 2.0 प्राधिकरण सर्वर नमूना कोड निम्न http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-serverनिष्क्रिय प्रमाणीकरण मोड में ओविन कुकी मिडलवेयर सेट को ट्रिगर करने का सही तरीका क्या है?

साथ ही डला पैकेज को देख रहे हैं Microsoft.aspnet.identity.samples पैकेज (स्थापित पैकेज Microsoft.aspnet.identity.samples -पूर्व)

और मैं अपने सिर को निष्क्रिय बनाम सक्रिय कुकी मिडलवेयर कैसे काम करता है, इस बारे में अपने सिर को प्राप्त करने की कोशिश कर रहा हूं।

प्राधिकरण सर्वर उदाहरण में, "एप्लिकेशन" कुकी निष्क्रिय पर सेट है। पहचान नमूने में, "एप्लिकेशनक्यूकी" सक्रिय है।

जब मैं इस संपत्ति के बारे में पढ़ता हूं, तो यह बताता है कि मिलान करने वाले प्रमाणीकरण टाइप द्वारा अनुरोध किए जाने पर निष्क्रिय मिडलवेयर केवल तभी ट्रिगर होता है।

अगर मैं Microsoft.aspnet.identity.samples में startup.auth.cs फ़ाइल को संपादित और निष्क्रिय करने के लिए आवेदन कुकी सेट है, तो में प्रवेश करें, यह मान्य करने के लिए लगता है, लेकिन मुझे में प्रवेश नहीं करता है।

कोड में गहरी खुदाई, मुझे लगता है कि खाते नियंत्रक SignInHelper.SignInAsync

इस विधि के लिए एक कॉल करने के लिए नीचे फोड़ा उपयोगकर्ता जो करने के लिए एक फोन है से एक claimsidentity हो जाता है: (, उपयोगकर्ता DefaultAuthenticationTypes.ApplicationCookie) CreateIdentityAsync

मैं स्पष्ट रूप से कुछ समझ नहीं रहा हूं, क्योंकि जो मैंने पढ़ा और बता सकता हूं, वें ई कुकी के पास दावा के समान प्रमाणीकरण टाइप है, लेकिन जब प्रमाणीकरण। साइनइन कहा जाता है, तो कुकी सेट नहीं लगती है और मुझे पंजीकरण और लॉगिन करने के विकल्पों के साथ मुख्य पृष्ठ पर वापस कर दिया जाता है।

मुद्दा नकल करने के लिए, एक नई परियोजना खाली asp.net अनुप्रयोग शुरू करते हैं, तो पहचान नमूना पैकेज स्थापित है, तो करने के लिए startup.auth.cs के app.useCookieAuthentication बदलने के लिए:

app.UseCookieAuthentication(new CookieAuthenticationOptions { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive, 
      LoginPath = new PathString("/Account/Login"), 
      Provider = new CookieAuthenticationProvider { 
       // Enables the application to validate the security stamp when the user logs in. 
       // This is a security feature which is used when you change a password or add an external login to your account. 
       OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(30), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
      } 
     }); 

मैं बदल रहा है की कोशिश की है startup.auth.cs में कुकी नाम और उस कोड में "कस्टम" नाम जोड़ना जो दावा का लाभ उठाने के लिए उत्पन्न करता है।

मैं शोध रखने जा रहा हूं, लेकिन सोचा कि मैं इस बीच समुदाय तक पहुंच जाऊंगा।

उत्तर

3

मुझे आपके सटीक प्रश्न के बारे में निश्चित नहीं है।

ओडब्ल्यूआईएन एक पाइपलाइन है जो पंजीकृत सभी मिडलवेयर मॉड्यूल चलाती है। आपके पास पंजीकृत कई प्रकार के मिडलवेयर हो सकते हैं।

कुकी पहचान को अस्वीकार करती है। यदि आप प्रमाणीकरण प्रकार को बाह्य वाहक में बदलते हैं तो यह कुकी में एक भालू टोकन होगा।

मुझे यकीन नहीं है कि यह आपके लिए क्यों काम नहीं कर रहा है, यही वह है जो मैं उपयोग करता हूं।(मैं टेम्पलेट के बाहरी लॉगिन को देखा नहीं किया है)

// Enable the application to use a cookie to store information for the signed in user 
    app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       //just to show bearer 
       AuthenticationType = DefaultAuthenticationTypes.ExternalBearer, 
       LoginPath = new PathString("/Account/Login"), 
      } 

Good explanation of active vs. passive, from Mr. Brock Allen himself.

बनाम निष्क्रिय प्रमाणीकरण मिडलवेयर

एक सवाल है कि उठता सक्रिय - अगर नए टेम्पलेट कई Owin प्रमाणीकरण मिडलवेयर कॉन्फ़िगर किया , तो वास्तव में किस का उपयोग किया जाता है? खैर, ओविन प्रमाणीकरण मिडलवेयर में निष्क्रिय बनाम सक्रिय की अवधारणा है। सक्रिय मिडलवेयर हमेशा आने वाले अनुरोध को देखते हैं और कॉल को प्रमाणीकृत करने का प्रयास करते हैं और यदि सफल होते हैं तो वे एक प्रिंसिपल बनाते हैं जो वर्तमान उपयोगकर्ता का प्रतिनिधित्व करता है और उस प्रिंसिपल को होस्टिंग वातावरण को असाइन करता है। दूसरी तरफ निष्क्रिय मिडलवेयर केवल पूछे जाने पर अनुरोध का निरीक्षण करता है। विजुअल स्टूडियो 2013 से डिफ़ॉल्ट टेम्पलेट्स के मामले में, कॉन्फ़िगर किए गए सभी मिडलवेयर डिफ़ॉल्ट रूप से सभी निष्क्रिय होते हैं, "मुख्य" कुकी प्रमाणीकरण मिडलवेयर को छोड़कर (बाहर निकलते हैं दो कुकी मिडलवायर जो कुछ टेम्पलेट्स में उपयोग किए जाते हैं - मुख्य और बाहरी पहचान प्रदाताओं के लिए एक और दूसरा यह निष्क्रिय के रूप में चिह्नित है)।

+0

हाय विलियम, इस के लिए धन्यवाद। मैंने ब्रॉक एलन के ब्लॉग और पोस्ट के माध्यम से कुछ बार पढ़ा है और अनिवार्य रूप से इस कथन को समझने की कोशिश कर रहा हूं: "दूसरी तरफ निष्क्रिय मिडलवेयर केवल अनुरोध के लिए अनुरोध का निरीक्षण करता है।" ऐसा लगता है कि प्रमाणीकरण टाइप, आईई को इंगित करने के लिए यह पूछने का तरीका है: जब आप कोई दावा करते हैं तो आप इसे प्रमाणीकरण टाइप कर सकते हैं। हालांकि जब मैं ऐसा करता हूं, तो मेरा सभी प्रमाणीकरण कोड सफल होता है, लेकिन कुकी सेट नहीं होती है। मैं यह समझने की कोशिश कर रहा हूं कि मुझे मैन्युअल रूप से क्या करना है कि सक्रिय मिडलवेयर स्वचालित रूप से करता है। – Steve

+0

उपरोक्त में जोड़ने के लिए, मुझे पता है कि जब मैं अपनी पोस्ट में कोड में लाइन बदलता हूं प्रमाणीकरण मोड = माइक्रोसॉफ्ट.ऑविन। सुरक्षा। प्रमाणीकरण मोड। प्रमाणीकरण मोड = माइक्रोसॉफ्ट.ऑविन। सुरक्षा। प्रमाणीकरण मोड। सक्रिय सबकुछ एक ही तरीके से काम करता है सक्रिय के साथ कुकी प्रमाणीकरण के बाद सेट है और मैं लॉग इन हूं। निष्क्रिय सब कुछ काम करता है लेकिन कुकी सेट नहीं है। मैं यह निर्धारित करने की कोशिश कर रहा हूं कि सक्रिय डेवलपर की तरह कुकी पीढ़ी को ट्रिगर करने के लिए डेवलपर को क्या करना है। – Steve

+0

दावा दावों के साथ साइनइन कॉल करना कुकी पीढ़ी को ट्रिगर करता है, सक्रिय/निष्क्रिय मोड कुकी पीढ़ी को प्रभावित नहीं करना चाहिए, मुझे लगता है कि मुझे –

0

पृष्ठ कोडिंग के नीचे टिप्पणी करते समय ठीक काम करता है।

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 

AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 

//LoginPath = new PathString("/Login"), 

Provider = new CookieAuthenticationProvider(), 

CookieName = "DefaultAuthenticationTypes", 

CookieHttpOnly = true,    
ExpireTimeSpan = TimeSpan.FromHours(cookieActiveTime), 

}); 

+0

hmmm, शायद। इसलिए ? – Wndrr

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