无域Windows Server上Business Central On-Premise SoapUI/gSoap访问401配置咨询
无域环境下Business Central On-Premise Web服务访问配置方案
一、Business Central服务端配置
- 启用NTLM认证:打开Business Central管理控制台,找到对应的Web服务实例,在「认证」设置中勾选NTLM选项(无域环境下本地账户依赖NTLM完成身份验证)。
- 配置服务账户权限:运行BC Web服务的系统账户(如
BCNTSvc)需具备以下权限:- Windows Server本地登录权限;
- 访问IIS站点资源的权限(若使用IIS托管);
- Business Central中对应Web服务页面/代码单元的访问权限。
- IIS身份验证设置(若IIS托管):
- 打开IIS管理器,定位到BC Web服务对应的站点;
- 启用Windows身份验证,禁用匿名身份验证(Windows身份验证在无域环境下自动使用NTLM协议)。
二、SoapUI客户端配置
- 设置NTLM认证信息:在请求的
Auth选项卡中,选择NTLM Authentication,填入格式为服务器NetBIOS名\用户名的账号(如WIN-ABC123\myUser)及对应密码; - 启用预认证:在请求属性中开启
Authentication Preemptive,避免先发送匿名请求触发服务器401挑战导致的认证失败; - 使用主机名访问:请求URL尽量使用服务器NetBIOS名或
localhost(本地访问时),不要用IP地址,避免NTLM的SPN匹配问题。
三、gSoap客户端配置
- 编译时启用NTLM支持:生成gSoap代码时添加编译参数
-DWITH_NTLM,确保库包含NTLM认证功能; - 代码中配置认证参数:在调用Web服务前设置NTLM认证信息,示例代码如下:
struct soap *soap = soap_new(); // 用户名格式:服务器NetBIOS名\本地账户名 soap->user = "WIN-ABC123\\myUser"; soap->passwd = "MyPasswd"; soap->httpauth = SOAP_AUTH_NTLM; soap->authrealm = NULL; // 无域环境下可设为NULL // 调用Web服务方法(示例) soap_call___ns1__ReadMultiple(soap, NULL, NULL, NULL, "", 0, &result);
- 处理认证挑战:确保gSoap能正确处理服务器返回的401认证挑战,可适当调整超时参数(如
soap->http_connect_timeout)避免请求中断。
四、通用检查项
- 确认服务器本地账户
myUser已在Business Central中分配对应权限:需添加Web服务权限集(如SOAP Web Services)及目标页面(如SalesOrder)的访问权限; - 检查防火墙设置:确保客户端与服务器之间的BC Web服务端口(如8012)未被拦截;
- 验证账户有效性:确认本地账户
myUser密码正确,且未被锁定或禁用。
内容的提问来源于stack exchange,提问作者famedoro
相关产品推荐
相关产品推荐

