การรับรองความถูกต้องของ Windows Express IIS


245

ฉันพยายามใช้ IIS Express กับ VS2010 เพื่อโฮสต์แอปพลิเคชัน Silverlight ฉันแก้ไขไฟล์ applicationhost.config เพื่ออนุญาตให้แก้ไขการตั้งค่าที่เหมาะสม ฉันมีสิ่งต่อไปนี้ในเว็บของฉัน config:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

ฉันไม่ได้รับการรับรองความถูกต้องและบริการโทรศัพท์ของฉันจะส่งคืนระเบียนที่ไม่มีค่าเป็นผู้ใช้ ฉันสามารถใช้งานได้หลังจากติดตั้ง VS2010 SP1 BETA แต่ฉันพยายามทำให้มันใช้งานได้กับ IIS Express เท่านั้น

ฉันจะเปิดใช้งาน Windows Authentication เพื่อทำงานกับ IIS Express ได้อย่างไร มีการตั้งค่าที่ฉันขาดหายไปหรือไม่?

คำตอบ:


276

ตัวเลือก 1 :

แก้ไข\My Documents\IISExpress\config\applicationhost.configไฟล์และเปิดใช้งาน windowsAuthentication เช่น:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

ตัวเลือก - 2 :

ปลดล็อกส่วน windowsAuthentication ใน \ My Documents \ IISExpress \ config \ applicationhost.config ดังต่อไปนี้

<add name="WindowsAuthenticationModule" lockItem="false" />

เปลี่ยนการตั้งค่าแทนที่สำหรับประเภทการตรวจสอบสิทธิ์ที่จำเป็นเป็น 'อนุญาต'

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

เพิ่มการติดตามใน web.config ของแอปพลิเคชัน

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

ลิงค์ด้านล่างอาจช่วยได้: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

หลังจากติดตั้ง VS 2010 SP1 แล้วการใช้ตัวเลือก 1 + 2 อาจจำเป็นเพื่อให้การรับรองความถูกต้องของ windows ทำงานได้ นอกจากนี้คุณอาจต้องตั้งค่าการรับรองความถูกต้องแบบไม่ระบุชื่อเป็นเท็จใน IIS Express applicationhost.config:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

สำหรับ VS2015 ไฟล์กำหนดค่าแอปพลิเคชัน IIS Express อาจอยู่ที่นี่:

$(solutionDir)\.vs\config\applicationhost.config

และ<UseGlobalApplicationHostFile>ตัวเลือกในไฟล์โครงการจะเลือกไฟล์กำหนดค่าเริ่มต้นหรือโซลูชันเฉพาะ


ขอบคุณ แต่ฉันลองตัวเลือกด้านบน แต่ฉันก็ยังไม่สามารถใช้ Windows Authentication ได้ ฉันเดาว่าฉันจะต้องรอ VS2010 / SP1 เพื่อรับฟังก์ชั่นนี้
ทำเครื่องหมาย

3
ตัวเลือกที่สองทำงานให้ฉัน ใช้เวลาสักครู่เพื่อค้นหาโพสต์นี้!
TodK

คำถามนี้ใช้ไม่ได้อีกต่อไปตั้งแต่ VS2010 sp1 ออกมา ฉันพยายามทำให้มันทำงานโดยไม่ติดตั้ง sp1 ฉันเดาว่า sp1 กำลังทำอะไรบางอย่างเพื่อตั้งค่าในครั้งแรกที่ฉันไม่สามารถเข้าใจได้ ฉันสามารถไปข้างหน้าและทำเครื่องหมายคำตอบนี้ถูกต้องแม้ว่าจะไม่จริง ๆ ตั้งแต่ sp1 ไม่ถูกติดตั้งเป็นสิ่งที่จำเป็น
Mark

1
ขอบคุณคน! NTLM ทำงานโดยปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อ
Rob Angelier

4
ใน VS2015 การกำหนดค่า IIS Express ถูกย้ายไปยังโครงสร้างโซลูชันโดยเฉพาะอย่างยิ่ง $ (SolutionDir) \. vs \ config \ applicationhost.config เศร้าที่มันไม่ได้ใช้การกำหนดค่าที่มีอยู่ภายใต้ MyDocuments \ IISExpress เข้าบัญชีดังนั้นการปรับแต่งใด ๆ จะต้องอ่าน
Tedford

401

Visual Studio 2010 SP1 และ 2012 เพิ่มการสนับสนุนสำหรับ IIS Express โดยไม่จำเป็นต้องแก้ไขวงเล็บเหลี่ยม

  1. หากคุณยังไม่ได้คลิกขวาที่โครงการเว็บรสและเลือก "ใช้ IIS Express ... "
  2. เมื่อเสร็จแล้วให้เลือกโครงการเว็บและกดF4เพื่อมุ่งเน้นแผงคุณสมบัติ
  3. ตั้งค่าคุณสมบัติ "Windows Authentication" เป็น Enabled และคุณสมบัติ "Anonymous Authentication" เป็น Disabled

ป้อนคำอธิบายรูปภาพที่นี่

ฉันเชื่อว่าวิธีนี้ดีกว่าตัวเลือกของ vikomall

  • ตัวเลือก # 1 เป็นการเปลี่ยนแปลงทั่วโลกสำหรับไซต์ IIS Express ทั้งหมด
  • ตัวเลือก # 2 ออกจากการพัฒนา cruft ใน web.config
    • นอกจากนี้อาจทำให้เกิดข้อผิดพลาดเมื่อปรับใช้กับ IIS 7.5 ยกเว้นว่าคุณทำตามขั้นตอน "ปลดล็อค" ใน applicationHost.config ของเซิร์ฟเวอร์ IIS ของคุณ

โซลูชันที่ใช้ UI ด้านบนใช้องค์ประกอบตำแหน่งเฉพาะของไซต์ใน applicationHost.config ของ IIS Express โดยปล่อยให้แอปไม่มีการแตะต้อง

ข้อมูลเพิ่มเติมที่นี่: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx


5
เพื่อเน้นสิ่งที่ฉันพลาด - เมนูบริบทของคุณสมบัติและAlt-Enterทางลัดไม่ได้แทนที่รายละเอียดของบานหน้าต่างคุณสมบัติอย่างสมบูรณ์ซึ่งอนุญาตให้คุณเปลี่ยนได้ว่าจะเปิดใช้งานการรับรองความถูกต้องของ windows หรือไม่ ใช้F4หรือคลิกที่บานหน้าต่างคุณสมบัติเพื่อดูคุณสมบัติ
Kaleb Pederson

ฉันต่อสู้กับงานนี้หลายวันก่อนที่จะเริ่มต้นใหม่ด้วยบทความนี้: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx โดยทั่วไปไม่สนใจทุกอย่างในโพสต์ต้นฉบับเริ่มต้นใหม่ด้วย " บริสุทธิ์ "applicationhost.config และเพียงแค่เปิดใช้งานการตั้งค่าตามคำตอบนี้ ในที่สุดฉันก็ได้รับการตรวจสอบ Windows! ขอบคุณ !!
DaveN59

มันจบลงด้วยการเปลี่ยนการตั้งค่า IISExpressWindowsAuthentication จาก 'เปิดใช้งาน' เป็นปิดใช้งาน 'ใน. csproj <IISExpressWindowsAuthentication> ปิดใช้งาน </IISExpressWindowsAuthentication>
Cameron Taggart

7
ตัวเลือกทั้งสองนั้นเป็นสีเทาและไม่ทำงานสำหรับฉัน มีความคิดอะไรบ้าง
awl

1
ตัวเลือกที่ 2 เป็นสีเทาเนื่องจากคุณมีสิ่งนี้ในการกำหนดค่า IIS Express <section name = "anonymousAuthentication" overrideModeDefault = "Allow" /> <section name = "windowsAuthentication" overrideModeDefault = "Allow" /> เอาออก overrideModeDefault = "Allow" "และพวกเขาจะไม่พอใจ
มิคาห์

9

ตรวจสอบว่าคุณได้ตรวจสอบคุณสมบัติ "การรับรองความถูกต้องของ windows" ในแผงควบคุม -> โปรแกรม -> เปิดคุณสมบัติของ windows หรือ -> บริการข้อมูลทางอินเทอร์เน็ต -> บริการบนเว็บทั่วโลก -> ความปลอดภัย

นอกจากนี้ดูเหมือนว่าจะมีความแตกต่างใหญ่เมื่อใช้ firefox หรือ internet explorer หลังจากติดตั้ง "การรับรองความถูกต้องของ windows" มันทำงานได้สำหรับฉัน แต่เฉพาะใน IE


2
และทำให้มันทำงานใน firefox: markmonica.com/2007/11/20/…
bees73


5

นอกเหนือจากคำตอบที่ดีเหล่านี้ในบริบทของสภาพแวดล้อม dev ของ IIS Express และเพื่อป้องกันข้อผิดพลาด "system.web/identity@impersonate" ที่น่าอับอายคุณสามารถมั่นใจได้ว่าการตั้งค่าต่อไปนี้อยู่ในไฟล์ applicationhost.config ของคุณ .

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

สิ่งนี้จะช่วยให้คุณมีความยืดหยุ่นมากขึ้นในระหว่างการพัฒนาและการทดสอบ แต่ให้แน่ใจว่าคุณเข้าใจความหมายของการใช้การตั้งค่านี้ในสภาพแวดล้อมการผลิตก่อนที่จะทำเช่นนั้น

กระทู้ที่มีประโยชน์:


ลงจอดบนนี้โดยไม่ได้ตั้งใจ แต่ใช้งานได้ :-)
joshmcode

2

ใน IIS Manager คลิกที่เว็บไซต์ของคุณ คุณต้อง "อยู่ในมุมมองคุณสมบัติ" (แทนที่จะ "ดูเนื้อหา")

ในส่วน IIS ของ "มุมมองสถานที่" เลือกคุณสมบัติที่เรียกว่า "การรับรองความถูกต้อง" และคลิกที่มัน ที่นี่คุณสามารถเปิดใช้งาน Windows Authentication นี้เป็นไปได้ (โดยฉันคิดว่าหนึ่งในคำแนะนำในหัวข้อ) โดยการตั้งค่าใน web.config (... )

แต่บางทีคุณมี web.config คุณไม่ต้องการที่จะตรวจสอบมากเกินไปด้วย จากนั้นเธรดนี้จะไม่ได้รับความช่วยเหลือมากเกินไปซึ่งเป็นเหตุผลที่ฉันเพิ่มคำตอบนี้


0

คำตอบนี้อาจช่วยได้หาก: 1) ไซต์ของคุณเคยทำงานกับการรับรองความถูกต้องของ Windows ก่อนที่จะอัปเกรดเป็น Visual Studio 2015 และ 2) และไซต์ของคุณพยายามโหลด/login.aspx(แม้ว่าจะไม่มีไฟล์ดังกล่าวในเว็บไซต์ของคุณ)

เพิ่มสองบรรทัดต่อไปนี้ในappSettingsส่วนของเว็บไซต์ของWeb.configคุณ

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

0

ในบันทึกเดียวกัน - VS 2015, .vs \ config \ applicationhost.config มองไม่เห็นหรือไม่พร้อมใช้งาน

โดยค่าเริ่มต้นโฟลเดอร์. vs จะถูกซ่อน (อย่างน้อยในกรณีของฉัน)

หากคุณไม่พบโฟลเดอร์. vs ให้ทำตามขั้นตอนด้านล่าง

  1. คลิกขวาที่โฟลเดอร์ Solution
  2. เลือก 'คุณสมบัติ'
  3. ในAttributesส่วนคลิกHiddenกล่องกาเครื่องหมาย (ไม่ได้เลือกค่าเริ่มต้น)
  4. จากนั้นคลิกปุ่ม 'ใช้'
  5. มันจะแสดงหน้าต่างยืนยัน 'เลือกการเปลี่ยนแปลงในโฟลเดอร์นี้โฟลเดอร์ย่อยและตัวเลือกไฟล์' เลือกแล้วกด 'ตกลง'

    ทำซ้ำขั้นตอนที่ 1 ถึง 5 ยกเว้นในstep 3ครั้งนี้คุณต้องuncheckใช้ตัวเลือก 'ซ่อน' ที่คุณตรวจสอบก่อนหน้านี้

ตอนนี้ควรจะเห็นโฟลเดอร์. vs


0

หลังจากทำทุกอย่างตามคำตอบข้างต้นแล้วฉันก็พบว่าฉันไม่ได้ใช้ Visual Studio เป็นผู้ดูแลระบบ หลังจากทำงานเป็นผู้ดูแลระบบแก้ไขปัญหาได้แล้ว


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.