共用方式為


在 Visual Studio 專案中指定非 Kerberos 驗證

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

使用 Visual Studio 2005 時,有些驗證機制需要額外的設定步驟。例如,Kerberos 驗證需要服務主要名稱 (SPN) 註冊和其他相關步驟。如需詳細資訊,請參閱<使用 Http.sys 註冊 Kerberos 服務主要名稱>。

設定為使用整合式驗證的 HTTP 端點可以利用 Kerberos 或 NTLM 做為驗證配置來回應用戶端。伺服器所選取和使用的實際配置 (Kerberos 或 NTLM),取決於要求驗證時用戶端所使用的配置。如需詳細資訊,請參閱<端點驗證類型>。

此主題提供如何修改 Visual Studio 2005 專案的詳細資料,當選取整合式驗證作為伺服器上的驗證類型時,Web 服務用戶端應用程式會要求非 Kerberos 驗證配置。

一般而言,當您以 Visual Studio 2005 撰寫用戶端應用程式時,必須設定適合 SQL Server 實作中原生 XML Web Service 使用的認證。假設您是使用整合式驗證,就可以在程式碼中使用類似下列的項目:

myServer.sql_endpoint proxy = new myServer.sql_endpoint();
proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

然而,如果 Kerberos 驗證未正確設定,而無法從其他電腦運作 (SPN 註冊等) 時,Visual Studio 2005 一定會嘗試使用 Kerberos 驗證配置,除非您選取 NTLM、BASIC 或 DIGEST 作為驗證類型,在 HTTP 結束點 (sql_endpoint) 上明確停用 Kerberos 作為允許的驗證配置。您可以指定 Visual Studio 2005 使用另一個支援的配置,例如 NTLM。

下列程式碼顯示如何覆寫 Visual Studio 2005 所使用的驗證配置,讓用戶端應用程式要求改用 NTLM 驗證配置作為驗證機制:

mattm1.sql_endpoint proxy = new mattm1.sql_endpoint();
System.Net.CredentialCache myCreds = new System.Net.CredentialCache();

myCreds.Add(new Uri(proxy.Url), "NTLM", System.Net.CredentialCache.DefaultCredentials.GetCredential(new Uri(proxy.Url), "NTLM"));
proxy.Credentials = myCreds;

雖然使用以上程式碼範例,可以在 INTEGRATED 結束點上強制 Visual Studio 2005 使用 NTLM 以取代 Kerberos,但因為 SPN 問題而無法使用 Kerberos 時,建議您建立結束點並設定 AUTHENICATION=NTLM,用這個方法使用 NTLM。

開發環境的其他組態需求

上節中所提及的程式碼修改,可允許用戶端應用程式指定和使用 Kerberos 以外的驗證配置,但在開發環境中執行和測試時,還需要進行其他工作才能支援您的應用程式。

請注意,依預設,Visual Studio 中的加入 Web 參考功能,在嘗試擷取 Web 服務的 WSDL 回應時,一定會使用 Kerberos。若要避免這個狀況,您可以執行下列因應步驟:

  1. 正確設定開發環境的 Kerberos 驗證。這包含以單一使用者身分註冊您自己的 Kerberos SPN,或開發人員網域群組的 Kerberos SPN (如果適用的話)。如需詳細資訊,請參閱<使用 Http.sys 註冊 Kerberos 服務主要名稱>。

  2. 暫時停用結束點上的 Kerberos。藉由使用下列 ALTER ENDPOINT 程序切換至 DIGEST 模式,即可正確取得 WSDL 回應。

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = DIGEST
    )
    
  3. 在 Visual Studio 2005 專案中加入 Web 參考。

  4. 將結束點切換回 INTEGRATED 模式,如下所示:

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = INTEGRATED
    )
    

或者,您可以依照下列步驟執行:

  1. 透過其他機制 (例如使用 Internet Explorer 並將 WSDL 回應儲存至檔案中) 擷取 WSDL 回應。

  2. 在 Visual Studio 中加入來自檔案的 Web 參考,以取代 URL,例如 http://MyServer/sql_endpoint?wsdl。