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

时间:2018-09-10 12:18:41

标签: web-services authentication navision dynamics-nav microsoft-dynamics-nav

我有一个NAV实例,它公开(OData)Web服务和is configured to use Windows as the credential type。我可以使用NTLM成功地针对这些Web服务进行身份验证。但是,我更喜欢使用HTTP基本身份验证来针对服务进行身份验证。我了解one can create an Access Key for authentication。我了解,如果我通过NAV用户卡将基本身份验证用户名设置为User Name,将密码设置为Web Service Access Key,则我应该能够使用基本HTTP身份验证。我已经在配置为使用NavUserPassword凭据类型的其他NAV实例上成功完成了此操作。但是,这不适用于具有Windows凭据类型的实例。

更具体地说,如果我从NavUserPassword实例请求受保护的资源,则会收到带有值Basic realm=""的{​​{3}}头的401。如果对Windows实例执行相同操作,则会得到一个值为WWW-Authenticate的{​​{1}}头。这表明,输入错误密码不是简单的情况,而是NAV实例未配置为接受任何Web服务访问密钥的情况更为复杂。

WWW-Authenticate似乎暗示对于Windows凭据类型,无法进行针对Web服务的HTTP基本身份验证,但这不是很明确,我不确定是否正确解析了文档。

顺便说一句,以上文档建议OAuth也可以用作身份验证机制,但是链接的文档位于PartnerSource门户墙的后面。如果我不选择使用HTTP基本身份验证,则可以选择OAuth吗?

2 个答案:

答案 0 :(得分:2)

我还没有尝试过自己,但是就像here

  

Microsoft Dynamics导航服务器实例的所有用户必须使用   相同的凭证类型。您指定使用哪种凭证类型   针对特定的Microsoft Dynamics导航服务器实例   Microsoft Dynamics导航服务器管理工​​具。

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

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

更新

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

就MS Windows Nav实例而言,是一项服务。

答案 1 :(得分:0)

有可能,步骤是

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

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