สตริงการเชื่อมต่อโดยใช้ Windows Authentication


134

ฉันกำลังสร้างเว็บไซต์ แต่ในฐานข้อมูลฉันใช้การรับรองความถูกต้องของ windows

ฉันรู้ว่าคุณใช้สิ่งนี้สำหรับการตรวจสอบสิทธิ์ SQL

<connectionStrings> 
    <add name="NorthwindContex" 
       connectionString="data source=localhost;
       initial catalog=northwind;persist security info=True; 
       user id=sa;password=P@ssw0rd" 
       providerName="System.Data.SqlClient" /> 
</connectionStrings>

ฉันจะแก้ไขสิ่งนี้ให้ทำงานกับการรับรองความถูกต้องของ Windows ได้อย่างไร

คำตอบ:


192

แทนที่ชื่อผู้ใช้และรหัสผ่านด้วย Integrated Security=SSPI;

ดังนั้นสตริงการเชื่อมต่อควรเป็น

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 

1
ฉันรู้ว่าคุณสามารถตั้งค่าผู้ใช้ AD เฉพาะให้เป็นแอพพูล (เว็บแอพ) คุณสามารถทำเช่นเดียวกันกับแอป windows ได้ไหม
user384080

6
Persist Security Infoอาจไม่จำเป็น: stackoverflow.com/a/2010059/1869660
Sphinxxx

@ Heads5150: เป็นไปได้ไหมว่าไม่มีสตริงการเชื่อมต่อในโปรเจ็กต์ของฉัน? ฉันพลาดอะไรไปรึเปล่า. ฉันได้ค้นหาโซลูชันทั้งหมดของฉันเพื่อค้นหาสตริงการเชื่อมต่อตามด้านบน ฉันไม่พบใด ๆ สิ่งที่ฉันก่อตั้งขึ้นถูกแสดงความคิดเห็นในรุ่นเว็บและการกำหนดค่าเว็บ .. ฉันใช้ vs express 2013 กับฐานข้อมูลท้องถิ่น
Vini

19

สำหรับวิธีแก้ไขที่ถูกต้องหลังจากผ่านไปหลายชั่วโมง:

  1. เปิดไฟล์กำหนดค่า
  2. เปลี่ยนสตริงการเชื่อมต่อดังต่อไปนี้

<add name="umbracoDbDSN" connectionString="data source=YOUR_SERVER_NAME;database=nrc;Integrated Security=SSPI;persist security info=True;" providerName="System.Data.SqlClient" />

  1. เปลี่ยนYOUR_SERVER_NAMEด้วยชื่อเซิร์ฟเวอร์ปัจจุบันของคุณและบันทึก
  2. เปิดตัวจัดการ IIS
  3. ค้นหาชื่อแอปพลิเคชันพูลที่เว็บไซต์หรือเว็บแอปพลิเคชันใช้อยู่
  4. คลิกขวาและเลือกการตั้งค่าขั้นสูง
  5. จากการตั้งค่าขั้นสูงภายใต้Process Modelเปลี่ยนบัญชีIdentity เป็น Customและเพิ่มรายละเอียด Server Admin ของคุณโปรดดูภาพที่แนบมา:

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

หวังว่านี่จะช่วยได้


2
วิธีนี้ใช้ได้ผลสำหรับฉัน แต่ฉันสงสัยว่าการเปลี่ยนแปลงข้อมูลประจำตัวนี้ส่งผลต่อพฤติกรรมของแอปพลิเคชันอย่างไรในแง่ของความปลอดภัย
CesarB

การดำเนินการทั้งหมดที่ดำเนินการโดยกระบวนการนี้จะดำเนินการโดยได้รับอนุญาต / สิทธิ์ของบัญชีนั้น อย่าให้สิทธิ์มากเกินความจำเป็น ขอแนะนำให้ใช้บัญชีบริการเฉพาะ ขอแนะนำให้ตรวจสอบ DISA IIS และ Windows Server STIG ด้วย: public.cyber.mil/stigs/downloads
duct_tape_coder

12

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

โดยทั่วไปจะใช้งานได้:

<connectionStrings>      
<add name="MyConnectionString"
         connectionString="data source=ServerName;
   Initial Catalog=DatabaseName;Integrated Security=True;"
         providerName="System.Data.SqlClient" />
</connectionStrings> 

การตั้งค่าฟิลด์Integrated Securityเป็นจริงหมายความว่าโดยพื้นฐานแล้วคุณต้องการเข้าถึงฐานข้อมูลผ่านการรับรองความถูกต้องของ Windows หากคุณตั้งค่าฟิลด์นี้การรับรองความถูกต้องของ Windows ที่ผิดพลาดจะไม่ทำงาน

นอกจากนี้ยังทำงานแตกต่างกันไปตามผู้ให้บริการที่คุณใช้

  • SqlClientทั้ง Integrated Security = true; หรือIntegratedSecurity = SSPI; กำลังทำงาน

  • OleDb เป็นIntegrated Security = SSPI;

  • Odbc เป็นTrusted_Connection = ใช่;
  • OracleClient เป็นIntegrated Security = ใช่;

Integrated Security = true แสดงข้อยกเว้นเมื่อใช้กับผู้ให้บริการ OleDb


6

สั้นกว่าและใช้งานได้

<connectionStrings>      
<add name="DBConnection"
             connectionString="data source=SERVER\INSTANCE;
       Initial Catalog=MyDB;Integrated Security=SSPI;"
             providerName="System.Data.SqlClient" />
</connectionStrings> 

ไม่จำเป็นต้องใช้ข้อมูลความปลอดภัยต่อไป

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