我有一个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吗?
答案 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)
有可能,步骤是
https://docs.microsoft.com/en-us/dynamics-nav/web-services-authentication