Invoke-RestMethod身份验证在本地服务器

时间:2018-06-12 18:54:41

标签: powershell asp.net-core-webapi

我有一个WebApi(.Net Core 2,Windows身份验证)端点,我可以从许多PS / Windows版本的组合中成功调用:

Invoke-RestMethod -Uri https://<fqdn>/api/notification -UseDefaultCredentials

但是当我在托管Web应用程序的服务器上本地运行它(使用相同的AD帐户)时,它无法进行身份验证。来自其他计算机的请求的IIS日志显示发出请求的用户帐户,但本地请求显示该字段的空值。

PS错误:

  

HTTP错误401.1 - 未经授权您无权查看   此目录或页面使用您提供的凭据。

IIS日志条目:

  

2018-06-12 21:42:31 GET / api / notification - 443 -   Mozilla的/ 5.0 +(+的Windows NT +的Windows NT + 6.3 + + EN-US)+ WindowsPowerShell / 5.1.14409.1012    - 401 1 3221225581 0

除本地服务器之外的任何其他计算机的条目将在端口号后面有DOMAIN \ User并且会成功。

1 个答案:

答案 0 :(得分:1)

禁用严格的名称检查。以下是文章摘要: https://www.andrewcbancroft.com/2016/01/21/401-unauthorized-browsing-site-from-local-iis-instance/

步骤...

  1. 将DisableStrictNameChecking注册表项设置为1.有关如何执行此操作的详细信息,请参阅Microsoft知识库中的文章281308
  2. 单击“开始”,单击“运行”,键入regedit,然后单击“确定”。
  3. 在注册表编辑器中,找到并单击以下注册表项: HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ LSA \ MSV1_0
  4. 右键单击“MSV1_0”,指向“新建”,然后单击“多字符串值”。
  5. 键入BackConnectionHostNames,然后按ENTER键。
  6. 右键单击“BackConnectionHostNames”,然后单击“修改”。
  7. 在“数值数据”框中,键入本地计算机上的站点的主机名或主机名,然后单击“确定”。
  8. 退出注册表编辑器,然后重新启动IISAdmin服务。 (为此,我从Powershell提示符运行iisreset)