IIS 7.5 (Windows 7) - ข้อผิดพลาด HTTP 401.3 - ไม่ได้รับอนุญาต


81

ฉันพยายามทดสอบเว็บไซต์ ASP.Net ของฉันบน localhost และฉันพบข้อผิดพลาดนี้:

HTTP Error 401.3 - Unauthorized
You do not have permission to view this directory or page because of
the access control list (ACL) configuration or encryption settings for
this resource on the Web server.

ฉันมีผู้ใช้ต่อไปนี้ในโฟลเดอร์แอปพลิเคชันเว็บไซต์ที่มีสิทธิ์อ่าน / เขียนเต็ม:

  • บริการเครือข่าย
  • IIS_IUSRS
  • ระบบ
  • ผู้ดูแลระบบ
  • นาธาน (ฉัน)

ฉันจะพยายามแก้ไขสิ่งนี้ได้อย่างไร


ฉันกำลังไล่ตามปัญหานี้มาสองสามชั่วโมงแล้ว ฉันมี IUSR และ Server \ IUSR แล้วจะอนุญาตให้อ่าน ปัญหาของฉันกลายเป็นโฟลเดอร์เข้ารหัสที่ถูกแยกออกมาจากไฟล์ซิป หากชื่อโฟลเดอร์เป็นสีเขียวให้ลองลบช่องทำเครื่องหมายออกจากการตั้งค่าขั้นสูงของกล่องคุณสมบัติ นี่เป็นการแก้ไขปัญหาของฉัน
ไลโอเนลมอร์ริสัน

คำตอบ:


123

IIS 7 ยังสร้าง "IUSR" เป็นผู้ใช้เริ่มต้นในการเข้าถึงไฟล์ผ่าน IIS ดังนั้นทำให้ผู้ใช้ IUSR มีสิทธิ์เข้าถึงเพื่ออ่านไฟล์ / โฟลเดอร์

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

คลิกแก้ไข -> เพิ่ม -> ขั้นสูง -> ค้นหาเดี๋ยวนี้ -> เลือก IUSR แล้วคลิกตกลงสี่ครั้ง


5
ตรวจสอบให้แน่ใจว่าคุณค้นหาจากตำแหน่งที่ถูกต้อง ฉันค้นหา IUSR ในโดเมนงานของฉันและไม่พบสิ่งใดเลย จากนั้นฉันเปลี่ยนที่ตั้งเป็นชื่อเครื่องของฉัน
Mike Blandford

8
หมายเหตุ: มันต้องใช้ทั้ง IUSR และ IIS_IUSRS เพื่อให้สามารถใช้งานได้บนเครื่องของฉัน ฉันพยายามลบ IIS_IUSRS หลังจากเพิ่ม IUSR โดยคิดว่า IUSR นั้นเป็นสิ่งที่ฉันต้องการ แต่มันก็คด
kdawg

1
มันทำให้ฉันประหลาดใจที่แค่เพิ่มIIS_IUSRsไม่พอ IUSRฉันยังมีการเพิ่ม น่าจดจำ: o)
Owen Blacker

แน่นอนว่าผู้ใช้ IUSR เป็นสมาชิกของ IIS_IUSRS โดยค่าเริ่มต้นแล้วหรือไม่ เซิร์ฟเวอร์ของฉันไม่ได้พูดถึง IUSR เพราะเป็นค่าเริ่มต้นที่อนุญาตสำหรับ wwwroot
NickG

33

พบสิ่งนี้ในฟอรัมอื่นดังนั้นฉันจึงไม่สามารถเครดิตได้ แต่ฉันทำและมันก็ใช้ได้กับฉัน:

"ลองเปลี่ยนการตั้งค่าการรับรองความถูกต้องแบบไม่ระบุชื่อใน IIS7:

คลิกที่การรับรองความถูกต้องและคลิกแก้ไขหลังจากเลือกการรับรองความถูกต้องแบบไม่ระบุชื่อ ในหน้าต่างเปิดเลือก Application Pool identity และคลิกตกลง "


5
นี่คือสิ่งที่ทำเพื่อฉัน
Chris Marisic

ฉันใช้การแอบอ้างบุคคลอื่นและนี่เป็นปัญหา ไม่แน่ใจว่าทำไม แต่มันได้ผล!
Jarrod

วันนี้หยุดฉันจากการฉีกผมทั้งหมดของฉันวันนี้ ขอขอบคุณ.
pauska

บน IIS 8.5 ดูเหมือนว่าค่าเริ่มต้นสำหรับแอปพลิเคชันใหม่จะไม่ใช้ Application Pool Identity แต่เป็นเพียง IUSR ดูเหมือนว่า gotcha เล็กน้อยสำหรับฉัน!
เชื้อโรค

คิดว่ามันเหมาะสมที่จะต้องการตัวตนที่แยกจากกันสำหรับ "ผู้ใช้พูลแอพ" และ "ผู้ใช้ที่แอบอ้างโดยแอพพูลหลังจากการพิสูจน์ตัวตน 'แบบไม่ระบุชื่อ' - แต่เฉพาะกับการเข้าใจย้อนหลังและหลังจากค้นหาคำตอบนี้แล้ว!
shambulator

20

ฉันมีปัญหาเดียวกันใน IIS 7.5 บน Windows Server 2008 สำหรับฉันขั้นตอนต่อไปนี้ใช้เพื่อแก้ไขปัญหา:

  • เปิดตัวจัดการ IIS
  • คลิกเว็บไซต์ที่คุณต้องการแก้ไข
  • คลิกสองครั้งที่การรับรองความถูกต้อง
  • คลิกการพิสูจน์ตัวตนแบบไม่ระบุชื่อจากนั้นคลิกแก้ไข ...ภายใต้การกระทำ
  • เปลี่ยนเป็นใช้ข้อมูลประจำตัวของกลุ่มแอปพลิเคชันแทนผู้ใช้เฉพาะ (ของฉันคือ IUSR)

หลังจากฉันทำการเปลี่ยนแปลงข้อผิดพลาด 401.3 ของฉันหายไป


10

คุณใช้กลไกการเข้าสู่ระบบหรือไม่รับรองความถูกต้องที่ไม่ระบุชื่อ?

หากไม่ระบุชื่อให้ไปที่ตัวจัดการ IIS ในไอคอนการรับรองความถูกต้องเลือกชื่อรับรองความถูกต้องที่ไม่ระบุชื่อจากนั้นคลิกปุ่มแก้ไขในการดำเนินการ ตรวจสอบผู้ใช้ที่ระบุไว้ที่นั่นและตรวจสอบว่ามีสิทธิ์ในไฟล์ / โฟลเดอร์ของไซต์

หากคุณมีระบบเข้าสู่ระบบบางรูปแบบตรวจสอบให้แน่ใจว่าผู้ใช้ที่คุณกำลังเข้าสู่ระบบมีสิทธิ์ในการใช้ไฟล์สำหรับเว็บไซต์และตรวจสอบให้แน่ใจว่า ID ของกลุ่มแอปพลิเคชันที่คุณใช้อยู่นั้นมีสิทธิ์อ่านอย่างน้อย ไปที่ไฟล์


3

ตามค่าเริ่มต้นด้วย IIS 7.5 แต่ละกลุ่มแอปพลิเคชันจะทำงานภายใต้ "ตัวตนเสมือน" ของตัวเอง ข้อมูลประจำตัวของ App Pool เป็นข้อมูลประจำตัวที่ใช้ในการเข้าถึงระบบไฟล์

ฉันไม่แน่ใจเกี่ยวกับกลไกของมัน แต่ Microsoft ทำเช่นนี้เพื่อเพิ่มความปลอดภัยของการติดตั้งเริ่มต้นในขณะที่ลดความจำเป็นในการสร้างบัญชีบริการในสถานการณ์การติดตั้งบางอย่าง โดยไม่คำนึงถึงผลที่สุดคือคุณจะต้องระบุบัญชี "ข้อมูลประจำตัวเสมือน" นี้และให้สิทธิ์การเข้าถึงไดเรกทอรีของคุณหรือเปลี่ยนบัญชีบริการของกลุ่มแอพ

ข้อมูลเฉพาะตัวของแอพพูลนั้นมีชื่อว่า "IIS AppPool \" ดังนั้นหากคุณใช้ DefaultAppPool ข้อมูลประจำตัวจะเป็น "IIS AppPool \ DefaultAppPool"

ดูนี้บทความสำหรับรายละเอียดที่สมบูรณ์มากขึ้น


3

สวัสดีสำหรับฉันใน IIS 8 งาน: 1) ไปที่ไดเรกทอรีเสมือนของ IIS - 2) การตรวจสอบ - 3) การตรวจสอบที่ไม่ระบุชื่อ - 4) กำหนด Application Pool Identity


ทั้งคำตอบ IUSR และคำตอบนี้จำเป็นสำหรับการแก้ปัญหาที่สมบูรณ์ในทุกกรณีที่ฉันพบ
Brian Knoblauch

2

เนื่องจากไม่มีคำตอบข้างต้นช่วยฉันฉันคิดว่าฉันจะแบ่งปันวิธีแก้ไขปัญหานี้เมื่อฉันชนเข้ากับเครื่องท้องถิ่นที่ใช้ win7 และ IIS7

  • ไปที่ IIS7 -> กลุ่มแอปพลิเคชัน

    ค้นหากลุ่มแอปพลิเคชันของเว็บไซต์ของคุณ (ในกรณีของฉัน DefaultAppPool) คลิกขวาและเลือกตัวเลือกขั้นสูง

    ค้นหาบทแบบจำลองกระบวนการและเปลี่ยนข้อมูลประจำตัวของผู้ใช้ที่คุณรู้ว่ามีการเข้าถึงไฟล์ในโฟลเดอร์เว็บไซต์ของคุณ (ในกรณีของฉันคือผู้ดูแลระบบในพื้นที่)


2

การตอบให้รวมข้อมูลจากความคิดเห็นในคำตอบที่ยอมรับ

ใน IIS 7.5 บน Windows Server 2008r2 กลุ่ม IIS_IUSRS รวมอยู่แล้ว แต่กลุ่ม IUSR ที่แยกต่างหากจะต้องยังคงถูกเพิ่มลงในสิทธิ์เพื่ออนุญาตการเข้าถึง / ดาวน์โหลดไฟล์

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


1

ลองสิ่งนี้ ... ไปที่การจัดการคอมพิวเตอร์ (คลิกขวาที่คอมพิวเตอร์ของฉันและเลือกจัดการ) -> ผู้ใช้ภายในและกลุ่ม -> ผู้ใช้ -> เลือก IUSR_MACHINENAME -> คลิกขวาที่คุณสมบัติ -> ตรวจสอบให้แน่ใจว่ามันเป็นสมาชิก ของ IIS_WPG และผู้ใช้ไม่ใช่แขก


ฉันทำงานกับ Server 2008 R2 และบัญชี IUser ไม่สามารถใช้ได้ในรายการ


1

ลองติดตั้งฝั่งไคลเอ็นต์ของ IIS โดยใช้aspnet_regiis -cแล้วตั้งค่า IIS ใหม่


1

สำหรับผู้ใช้ที่ไม่เพียงพอ:

ฉันได้มันมาทำงานกับเรื่องนี้:

  • เปิดมุมมองคุณลักษณะของเว็บไซต์ของคุณ
  • ไปที่การแมปตัวจัดการ
  • ค้นหาเส้นทางสำหรับ. cshtml
  • คลิกขวาและคลิกแก้ไขการอนุญาตสถานที่
  • เลือกดำเนินการ
  • กดตกลง

ตอนนี้ลองรีเฟรชเว็บไซต์ของคุณ

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