2011-07-20 29 views
19

我正在嘗試在同一網絡上的SQL Express實例,並使用我的域用戶進行身份驗證。它適用於SSMS中的Windows身份驗證。我證實我可以使用MyDB數據庫,包括編輯表格。使用計算機名稱替代用戶名的SQL集成安全性

然而,當我嘗試下面的連接字符串:

Server=ipaddress\SQLExpress; Database=MyDB; Integrated Security=SSPI;

我回來了一個錯誤:

Cannot open database "MyDB" requested by the login. The login failed. Login failed for user 'ROMANIA\MONSTER2$'

的問題是,MONSTER2是我的計算機的名稱,不是我的用戶名。 (羅馬尼亞是域名。)我做錯了什麼?

[編輯]我忘了一些可能相關的東西:我試圖從運行在我的電腦上的web服務打開連接。

+0

你需要配置你的Web服務作爲一個使用名爲運行(而不是本地機器,因爲它似乎是) –

+0

什麼惱人的怪癖。感謝您發佈這個問題。幫我出去了。 –

回答

13

您的Web服務是NT AUTHORITY\Network Service安全環境下運行。當訪問域中的網絡資源時,這將導致進程使用主機的機器帳戶。

您必須將Web服務配置爲與您的域標識一起運行。

如果您在IIS中託管您的Web服務,則可以通過impersonation執行此操作。這裏有一個例子:

<configuration> 
    <system.web> 
     <identity 
      impersonate="true" 
      userName="ROMANIA\username" 
      password="********" /> 
    </system.web> 
</configuration> 
+0

再次,我有問題選擇標記爲接受的答案。我會選這個,對不起拉傑。儘管我提出了兩個答案。 –

11

這是因爲您的Web服務器未設置爲使用服務使用者的身份,而是使用該服務器上運行的計算機的身份。

檢查你的web服務的web.config包含:<authentication mode="Windows" />

+6

呃!你是對的。爲了記錄,我必須去IIS並更改應用程序池(在高級設置中)以使用我的身份而不是默認的ApplicationPoolIdentity。我會在9分鐘內接受答案:) –

0

我需要我的情況做兩件事:

<authentication mode="Windows" /> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
<identity impersonate="true" /> 
相關問題