2012-10-02 42 views
20

में विंडोज प्रमाणीकरण विफल रहा है मैं अपनी कंपनी के लिए एक साधारण आंतरिक अनुप्रयोग बना रहा हूं, और इसके लिए सुरक्षा के लिए विंडोज प्रमाणीकरण की आवश्यकता है। अन्य सभी प्रमाणीकरण मोड अक्षम हैं। मैं एक स्थिति है जहाँ इंटरनेट एक्सप्लोरर क्रेडेंशियल के लिए संकेत देता है 3 बार में अटक कर रहा हूँ, तो यह त्रुटि के साथ विफल:आईआईएस 7.5

Not Authorized

HTTP Error 401. The requested resource requires user authentication.

मैं तो इस परीक्षण करने के लिए एक नंगे हड्डियों वेबसाइट बनाई। मैंने आईआईएस में एक नई साइट बनाई है, इसे अपने पोर्ट पर रखें (: 8111, यादृच्छिक रूप से चुने गए), वहां एक स्थिर "डिफ़ॉल्ट एचटीएम" फ़ाइल डालें, अक्षम अज्ञात प्रमाणीकरण, फिर विंडोज प्रमाणीकरण सक्षम करें। बाकी सब कुछ डिफ़ॉल्ट सेटिंग्स पर छोड़ दिया गया था। पोर्ट नंबर असाइन किया गया था क्योंकि हमारे पास इस मशीन पर एक ही आईपी साझा करने वाली कई साइटें हैं। // स्थानीय होस्ट: http: करने के लिए, वेब सर्वर से ही

  • ब्राउजिंग:

    यहां कुछ परिदृश्य हैं 8111 /, किसी अन्य कंप्यूटर से काम करता है ठीक

  • ब्राउजिंग करने के लिए http : // सर्वरपैड्रेस: 8111/ ठीक काम करता है

  • एनोट से ब्राउज़िंग उसके कंप्यूटर, http: // सर्वर नाम: 8111/ विफल रहता है (साख के लिए पूछता है 3 बार, तो देता है 401 त्रुटि)

मैं ऑनलाइन खोज कर रहा है और कोई भाग्य के साथ एक समाधान खोजने की कोशिश अब तक। या तो मुझे यह नहीं मिला है, या मैं जो कुछ पढ़ रहा हूं उसे काफी समझ में नहीं आता। किसी भी तरह की सहायता का स्वागत किया जाएगा।

उत्तर

38

इस मुद्दे के साथ लड़ने के 2 दिनों के बाद सिर्फ एक सहकर्मी की मदद से समाधान तैयार किया। यहां उन्होंने लिखा है:

There are 2 providers for Windows Authentication (Negotiate and NTLM). When setting the Website Authentication to Windows Authentication, while Windows Authentication is highlighted, click on the Providers link on the right pane or IIS Manager and move NTLM to the top. By default Negotiate is on top which is why you are getting an authentication prompt.

+1

+1 यह मेरे लिए किया गया, जबकि अधिक गहन और सही उत्तर यह देखना होगा कि क्यों वार्तालाप विफल रहा था, यह गलत है कि क्या गलत है। – Seph

+0

इस वजह से आधा दिन खो गया। फिक्स के लिए धन्यवाद। – learnerplates

+0

यह मेरे लिए भी हल हो गया। मेरे मामले में, मुझे 504 गेटवे टाइमआउट त्रुटि मिल रही थी। –

17

त्रुटि 401.1 जब आप एकीकृत प्रमाणीकरण का उपयोग करने वाली वेबसाइट ब्राउज़ करते हैं।

समाधान

लूपबैक जांच

* In Registry Editor, locate and then click the following registry key: 

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet अक्षम \ Control \ Lsa

* Right-click Lsa, point to New, and then click DWORD Value. 
* Type DisableLoopbackCheck, and then press ENTER. 
* Right-click DisableLoopbackCheck, and then click Modify. 
* In the Value data box, type 1, and then click OK. 

http://support.microsoft.com/kb/896861

+0

धन्यवाद !!! यह मेरे लिए काम करता है और मुझे पिछले कुछ घंटों के लिए डेवलपर पीड़ा और निराशा से राहत मिली है। –

+0

इसके लिए धन्यवाद। मैंने बस देखा और इस रजिस्ट्री को संपादित किया। जब उपर्युक्त एनटीएलएम फिक्स काम नहीं करता है, तो मैं अनुशंसा करता हूं कि यह निश्चित अगला कदम है। मैंने इसे समझने की कोशिश में बिताए कई सारे घंटों को प्रमाणित किया है! – JTester

+0

यह उसी मशीन से ब्राउज़ करते समय विंडोज प्रमाणीकरण को प्रभावित करेगा, वेबसाइट – Mick

0

यह एक समय हो गया है के बाद से यह सवाल पूछा गया था , लेकिन मैं कई लोगों को आरयू जानता हूँ इसमें बहुत कुछ है। इसके लिए एक और उचित फिक्स यहां वर्णित है: Kernel-mode authentication। हमने इसे कई महीनों पहले लागू किया, और यह ठीक काम करता है।

एक और अच्छा यहाँ स्पष्टीकरण: MORE 2008 AND KERBEROS: AUTHENTICATION DENIED, APP POOL ACCOUNT BEING INGNORED

एकल साइट के लिए लागू करने के लिए:

cd %windir%\system32\inetsrv 
set SiteName=TheSiteName 
appcmd.exe set config "%SiteName%" -section:system.webServer/security/authentication/windowsAuthentication /useKernelMode:"True" /useAppPoolCredentials:"True" /commit:apphost 

या सभी साइटों के लिए लागू करने के लिए: मैं व्यक्तिगत रूप से loopbackcheck विश्व स्तर पर अक्षम करने नहीं करने की सलाह देते

%windir%\system32\inetsrv\appcmd.exe set config -section:windowsAuthentication /useAppPoolCredentials:"True" /commit:apphost 
+0

वैसे मैं एक स्पष्टीकरण की उम्मीद कर रहा था कि नेगोशिएट को जादुई रूप से ठीक क्यों किया जाए, लेकिन यह यहां नहीं है। मैंने कर्नेल मोड को अनचाहे करने का प्रयास किया और वापस बातचीत की और इसे ठीक नहीं किया। वार्तालाप को हटाने से इसे ठीक किया गया ... लेकिन क्यों? –

3

अपने सर्वर पर (आईई: DisableLoopbackCheckके मान पर सेट करें आपकी रजिस्ट्री में)। यह एक सुरक्षा भेद्यता है। कृपया ज्ञात मेजबानों के लिए केवल अक्षम करें।

आपको सही दिशा में इंगित करने के लिए यहां एक पावरहेल फ़ंक्शन है।

function Add-LoopbackFix 
{ 
    param(
     [parameter(Mandatory=$true,position=0)] [string] $siteHostName 
    ) 

    $ErrorActionPreference = "Stop" 

    Write-Host "Adding loopback fix for $siteHostName" -NoNewLine 

    $str = Get-ItemProperty -Name "BackConnectionHostNames" -path 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0' -erroraction silentlycontinue 

    if ($str) { 
     if($($str.BackConnectionHostNames) -like "*$siteHostName*") 
     { 
      Write-Host "`tAlready in place" -f Cyan 
     } else{ 
      $str.BackConnectionHostNames += "`n$siteHostName" 
      Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" -Name "BackConnectionHostNames" -Value $str.BackConnectionHostNames 
      Write-Host "`tDone" -f Green 
     } 
    } else { 
     New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" -Name "BackConnectionHostNames" -Value $siteHostName -PropertyType "MultiString" 
     Write-Host "`tDone" -f Green 
    } 

    Write-Host "`tnote: we are not disabling the loopback check all together, we are simply adding $siteHostName to an allowed list." -f DarkGray 
} 
> Add-LoopbackFix "ServerName" 

Source

+0

इसे आंतरिक dev सर्वर पर अक्षम करने से कोई जोखिम नहीं उठाना चाहिए। यदि यह एक उत्पादन सर्वर है तो आप इसे दूरस्थ रूप से मार रहे होंगे और वैसे भी अकेले लूपबैक छोड़ सकते हैं। –

+0

@ रेयोस, यहां तक ​​कि देव में, अनुशंसित तरीका यह है कि यह प्रति-डोमेन और वैश्विक स्तर पर नहीं है। उत्पादन में, हमारे पास बहुत सारे ऐप्स (एसओए) हैं जो एक ही सर्वर पर अन्य ऐप्स को कॉल करते हैं। –

5

If it still does not work after moving NTML to top in the list of providers try to remove Negotiate completely so there is only NTML left.

कि यह मेरे लिए तय - चलती NTML शीर्ष विंडोज सर्वर 2012 को मदद नहीं की है और 8.5 IIS। मुझे निम्नलिखित स्टैकओवरफ्लो समस्या में समाधान मिला: IIS 7.5 Windows Authentication Not Working in Chrome

+0

यह मेरे लिए काम किया। – ben