我目前正試圖部署Navision webservice(來自Dynamics Navision 2009),並發現當連接到本地Navision SQL數據庫時,webservice進行身份驗證,但是不是遠程Navision SQL數據庫。Navision(2009)Webservice是否支持對遠程數據庫進行身份驗證?
因此,我們有服務器S(具有完整的Navision安裝)和W(僅安裝了服務)。在這兩個系統中的文件CustomSettings.config是除了相同,其中S引用本地主機:
<add key="DatabaseServer" value="127.0.0.1"></add>
<add key="ClientCredentialType" value="Windows"></add>
W變量S:(省略其它細節)
<add key="DatabaseServer" value="S"></add>
<add key="ClientCredentialType" value="Windows"></add>
本身運行作爲相同的web服務域用戶,並且該用戶在Navision中進行身份驗證。
當我連接到這是對S,認證工作和服務進行運行正常的web服務:
http://S:7047/DynamicsNAV/WS/Company/Codeunit/RLIntegartion
我會在這裏省略實際結果。當基於W而不是連接:
http://W:7047/DynamicsNAV/WS/Company/Codeunit/RLIntegartion
的Web服務,而不是返回XML表示認證失敗:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="urn:microsoft-dynamics-schemas/error">
a:Microsoft.Dynamics.Nav.Types.NavDatabasePasswordException
</faultcode>
<faultstring xml:lang="en-US">
The login failed when connecting to SQL Server S.
</faultstring>
<detail>
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
The login failed when connecting to SQL Server S.
</string>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
我可以配置在W至S上的Navision數據庫的ODBC連接,連接成功並驗證正確,所以實際的數據庫連接和身份驗證似乎沒有問題。
我知道,web服務本身通常必須在本地訪問,以便任何寫入的文件都可以從Navision Web服務寫入的地方讀取,但從文檔中可以看出,web服務可以合法訪問數據庫從一個單獨的服務器。然而,在實踐中(根據上述),這似乎並不實際。
這是Navision強加的限制嗎?如果沒有,有沒有人有任何建議,爲什麼web服務在訪問遠程數據庫時無法進行身份驗證,當相同的web服務本地成功?
或者它可能是codeunit程序員施加的限制嗎?我已經跟他們說過了,他們表示這應該起作用,但顯然它沒有。
MakSim是正確的,你需要一些SPN:https://social.technet.microsoft.com/wiki/contents/articles/717.service-principal-names-spns-setspn-syntax-setspn-exe.aspx – azatoth
我根據Technet文章配置了SPN,但仍收到驗證錯誤。 我想我只需要在SQL服務器上運行IIS。 (對於Web服務本身不是必需的,但對使用它的Web服務是必需的。)我們只需鎖定對IIS的訪問,以限制除需要訪問的服務器以外的主機訪問。 無論如何,謝謝你的建議。 – Ronny