2017-09-06 15 views
5

मैं एक नेट कोर 2.0 खाली वेब एप्लिकेशन में विंडोज और बेनामी प्रमाणीकरण मिश्रण करने की कोशिश कर रहा हूँ। मैं [प्राधिकरण] विशेषता से बचने के लिए चाहता हूं क्योंकि मैं एमवीसी या नियंत्रकों का उपयोग नहीं करना चाहता हूं। -> डीबग -> चेक किए गए "सक्षम विंडोज प्रमाणीकरण" और विकलांगWindows और नेट कोर में बेनामी प्रमाणीकरण 2.0

  1. मैं एक खाली नेट कोर 2.0 वेब अनुप्रयोग

  2. मैं गुण परियोजना के लिए गया था बनाया:

    मेरे सेटअप इस प्रकार है "अनाम प्रमाणीकरण सक्षम करें"। अब "विंडोज प्रमाणीकरण": सत्य और "अनाम प्रमाणीकरण": "आईआईएस" के तहत मेरे प्रक्षेपण सेटिंग्स.जेसन में झूठी दिखाई दी।

  3. अंदर Startup.cs, ConfigureServices में मैं services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme); रूप https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x#windows-authentication-httpsys--iisintegration

  4. में उल्लेख किया है मैं एक साधारण Console.WriteLine(context.User.Identity.Name); जोड़ा देखने के लिए कि यह app.Run अंदर काम करता है जोड़ा गया है और ... यह सब काम करता है!

हालांकि ... जैसे ही मैं सेट के रूप में "anonymousAuthentication" launchSettings.json में सच करने के लिए यह कार्य करना बंद कर और मैं क्या मैं इसके साथ साथ Windows प्रमाणीकरण काम करने के लिए क्या कर सकते हैं को समझ नहीं सकता। Context.User.Identity.IsAuthenticated हमेशा झूठा है। जैसा कि आप देख सकते हैं कि मेरी कॉन्फ़िगरेशन बहुत सरल है और मुझे इस तरह रहने के लिए इसकी आवश्यकता है। मैं कुछ गतिशील मार्गों पर विंडोज प्रमाणीकरण को सक्षम/अक्षम करना चाहता हूं, इसलिए [प्राधिकरण] विशेषता वाले नियंत्रकों का उपयोग करना एक विकल्प नहीं है।

जो मैं प्राप्त करने का प्रयास कर रहा हूं वह एक साधारण ऐप है जहां यूआरएल "/ प्रमाणीकृत" context.User.Identity.Name के मान के साथ उत्तर देगा और यूआरएल "/ पब्लिक" कुछ ऐसा जवाब देगा जैसे "यह एक सार्वजनिक पृष्ठ है!" । NTLM authentication on specific route in ASP.NET Core के समान कुछ लेकिन [अधिकृत] विशेषता और नियंत्रकों के बिना। संसाधन बहुत दुर्लभ हैं ... किसी को भी कोई विचार है कि मैं क्या खो सकता हूं? धन्यवाद!

उत्तर

5

बेनामी प्राथमिकता लेता है। जब आपको अपने ऐप के प्रतिबंधित हिस्से में अनाम अनुरोध मिलता है तो आपको httpContext.ChallengeAsync() पर कॉल करने की आवश्यकता होती है। इससे क्लाइंट अगले अनुरोध पर प्रमाण पत्र भेज देगा। यहां एक परीक्षण है जो यह करता है: https://github.com/aspnet/ServerTests/blob/e155b814349f8ff9dd563480d784c38837b0b59f/test/ServerComparison.TestSites/StartupNtlmAuthentication.cs#L34-L59

+0

बहुत बहुत धन्यवाद! 'context.ChallengeAsync (" विंडोज़ ") चाल चल रही थी! मैं कसम खाता हूं कि मैंने 'संदर्भ' का प्रयास करने की कोशिश की। ChallengeAsync() ', लेकिन मैंने स्कीमा के लिए पैरामीटर के रूप में" NTLM "का उपयोग किया और यह मुझे बताया कि प्रमाणीकरण स्कीमा मौजूद नहीं है ... पता नहीं था कि किस मूल्य को पास करना है ... –

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