ApplicationPoolIdentity IIS 7.5 ถึง SQL Server 2008 R2 ไม่ทำงาน


11

ฉันมีสคริปต์ทดสอบ ASP.NET ขนาดเล็กที่เปิดการเชื่อมต่อกับฐานข้อมูล SQL Server บนเครื่องอื่นในโดเมน มันไม่ทำงานในทุกกรณี

ติดตั้ง:

IIS 7.5 ภายใต้ W2K8R2 พยายามเชื่อมต่อกับอินสแตนซ์ SQL Server 2008 R2 ระยะไกล เครื่องทั้งหมดอยู่ในโดเมนเดียวกัน

การใช้ ApplicationPoolIdentity สำหรับเว็บไซต์ที่ไม่สามารถเชื่อมต่อกับ SQL Server ได้ดังต่อไปนี้:

การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'NT AUTHORITY \ ANONYMOUS เข้าสู่ระบบ' คำอธิบาย: มีข้อยกเว้นที่ไม่สามารถจัดการได้เกิดขึ้นระหว่างการดำเนินการตามคำขอเว็บปัจจุบัน โปรดตรวจสอบการติดตามสแต็กสำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดและที่มาในรหัส

รายละเอียดข้อยกเว้น: System.Data.SqlClient.SqlException: การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'NT AUTHORITY \ ANONYMOUS เข้าสู่ระบบ'

อย่างไรก็ตามถ้าฉันเปลี่ยน Process Model Identity เป็น NETWORK SERVICE หรือบัญชีโดเมนของฉันการเชื่อมต่อฐานข้อมูลก็สำเร็จ

ฉันได้รับสิทธิ์เข้าถึง \ $ ใน SQL Server

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

ฉันเปิดใช้งานการพิสูจน์ตัวตนแบบไม่ระบุชื่อและตั้งค่าให้ใช้ข้อมูลประจำตัวกลุ่มแอพลิเคชัน

ฉันจะทำให้งานนี้ได้อย่างไร เหตุใด ApplicationPoolIdentity จึงพยายามใช้การเข้าสู่ระบบแบบไม่ระบุชื่อ ยังดีกว่าฉันจะหยุดใช้งานการเข้าสู่ระบบแบบไม่ระบุชื่อได้อย่างไร


1
คุณสามารถตั้งค่าข้อมูลประจำตัว AppPool เป็น NETWORK SERVICE ได้ตลอดเวลา
JohnThePro

คำตอบ:


4

ฉันมีปัญหาเดียวกันเช่นกัน ตามหน้านี้ ApplicationPoolIdentity ควรเข้าถึงทรัพยากรเครือข่ายเป็นบัญชีเครื่อง (DOMAIN \ COMPUTERNAME $) แต่ใช้ NT AUTHORITY \ ANONYMOUS เข้าสู่ระบบเพื่อเข้าถึงเซิร์ฟเวอร์ SQL แทน

ฉันสามารถใช้โปรแกรมแก้ไขด่วนนี้เพื่อให้ ApplicationPoolIdentity ทำงานตามที่หมอบอกว่าควร โปรแกรมแก้ไขด่วนนี้ไม่ได้อธิบายวิธีแก้ไขปัญหาโดยเฉพาะสำหรับการเข้าถึงทรัพยากรเครือข่ายเป็น NT AUTHORITY \ ANONYMOUS LOGON แต่เกี่ยวข้องกับการเปลี่ยนรหัสผ่านของคอมพิวเตอร์

เธรด stackoverflow นี้ช่วยฉันค้นหาวิธีแก้ปัญหานี้:

เคล็ดลับที่มีประโยชน์อื่น ๆ สำหรับการดีบักข้อมูลประจำตัว ASP.NET และข้อมูลประจำตัว SQL

เนื่องจาก SQL integrated auth เกี่ยวข้องกับ identity thread จึงมีประโยชน์ที่จะสามารถดู identity ผู้ใช้ของคุณ identity thread (ซึ่งเปลี่ยนแปลงตามการรับบทบาท) และการล็อกอินเซิร์ฟเวอร์ SQL ตัวอย่าง ASPX นี้แสดงทั้งสามรายการ:

<%@ Import Namespace="System.Security.Principal" %>

<div>ASP.NET Request User identity: <%= User.Identity.Name %></div>
<div>Current thread/process WindowsIdentity: <%= WindowsIdentity.GetCurrent(false).Name %></div>
<asp:SqlDataSource ID="CurrentUserData" runat="server" ConnectionString="<%$ ConnectionStrings:ConnID %>"
           SelectCommand="select SYSTEM_USER" />
<asp:DetailsView DataSourceID="CurrentUserData" runat="server" />

2

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

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