使用Windows用户通过HTTP基本身份验证对NAV Web服务进行身份验证

问题描述 投票:0回答:2

我有一个NAV实例暴露(OData)Web服务和is configured to use Windows as the credential type。我可以使用NTLM成功验证这些Web服务。但是,我更愿意使用HTTP基本身份验证来对服务进行身份验证。我明白one can create an Access Key for authentication。据我所知,如果我将基本身份验证用户名设置为User Name,并将密码设置为来自NAV用户卡的Web Service Access Key,我应该可以使用基本HTTP身份验证。我已经在配置为使用NavUserPassword凭证类型的其他NAV实例上成功完成了此操作。但是,这对于使用Windows凭据类型的实例不起作用。

更具体地说,如果我从NavUserPassword实例请求受保护的资源,我会收到一个带有值为WWW-AuthenticateBasic realm=""头的401。如果我对Windows实例做同样的事情,我会得到一个值为WWW-AuthenticateNTLM标头。这表明它不是提供错误密码的简单情况,而是更复杂的NAV实例未配置为接受任何Web服务访问密钥的情况。

The documentation on Web Services Authentication似乎暗示对于Windows凭证类型,Web服务的HTTP基本身份验证是不可能的,但这不是非常明确,我不确定我是否正确解析文档。

另外,上述文档表明OAuth也可以用作身份验证机制,但链接文档位于PartnerSource门户墙后面。如果HTTP基本身份验证在我的情况下不是一个选项,OAuth是一个选项吗?

web-services authentication navision dynamics-nav microsoft-dynamics-nav
2个回答
2
投票

我没有尝试过自己,但据说here

Microsoft Dynamics NAV Server实例的所有用户必须使用相同的凭据类型。您可以在Microsoft Dynamics NAV服务器管理工​​具中指定用于特定Microsoft Dynamics NAV服务器实例的凭据类型。

因此,如果为ntlm配置了实例,则无法使用NavPassword对用户进行身份验证。但是,您始终可以为另一个凭据类型安装和配置单独的实例(=服务层)。

您还可以限制常规RTC用户完全连接该实例,并将其专用于Web服务。

UPD

正如我已经提到的,service tier与Nav实例相同。人们可以找到如何从Microsoft Docs创建新的导航实例。实例之间的区别将在URL中以访问它们。不同的实例可以位于不同的服务器上,也可以位于同一个服务器上。

在MS Windows Nav方面,实例是一项服务。


0
投票

有可能,步骤是

  1. 您需要使用NavUserPassword Auth的服务层(为此您需要一个证书)
  2. 在NAV中,您需要创建一个新用户并为其生成Web服务密钥
  3. 使用用户名和密钥,您可以使用基本身份验证

https://docs.microsoft.com/en-us/dynamics-nav/web-services-authentication

© www.soinside.com 2019 - 2024. All rights reserved.