c# Web Api:本地主机上的 HTTP 200 但具有相同用户的远程主机上的 400/401

c# WebApi: HTTP 200 on local host but 400/401 on remote host with same user

我编写了一个简单的 WebAPI 服务(在 Windows 服务中使用 OWIN 托管)并将 [Authorize] 属性放在 POST -方法。据我了解,现在只有 "known" 用户可以访问该服务(别担心,我知道,所有已知用户 还不是很安全)。

到目前为止,我的测试客户端工作正常当主机和客户端位于同一台机器上时(f.ex。我的工作站)。但是,当我在服务器计算机上部署该服务并再次尝试调用该服务时,使用 System.Net.Http.HttpClient 并设置 httpClientHandler.UseDefaultCredentials=true 时出现 HTTP 400 故障,或者当我使用时出现 HTTP 401 System.Net.WebClient 并设置 webClient.UseDefaultCredentials=True。

因此,身份验证机制似乎有所不同,具体取决于服务是托管在本地还是远程。

出于测试原因,我还尝试使用用户和密码显式设置凭据,但结果完全相同。

但是,我在这里错过了什么?有什么建议么? 提前致谢!

验证机器密钥。

如果授权服务器和资源服务器不在同一台电脑上,OAuth中间件会使用不同的机器密钥来加解密bearer access token。为了在两个项目之间共享相同的私钥,我们在两个 web.config 文件中添加相同的 machinekey 设置。

https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server