我编写了一个简单的WebAPI服务(在Windows Service中由OWIN托管),并将 [Authorize] 属性放在POST方法上。据我了解,现在只有“已知”用户可以访问该服务(我知道,所有已知用户还不是很安全)。
到目前为止,当主机和客户端位于同一台计算机上时,我的测试客户端可以正常工作(例如,我的工作站)。但是,当我在服务器计算机上部署服务并再次尝试调用服务时,使用System.Net.Http.HttpClient并设置httpClientHandler.UseDefaultCredentials = true时会收到HTTP 400失败,或者当我使用HTTP 401时会出现HTTP 400失败System.Net.WebClient并设置webClient.UseDefaultCredentials = True。
因此,根据服务是本地托管还是远程托管,身份验证机制的行为似乎有所不同。
出于测试原因,我还尝试使用用户名和密码来设置显式凭据,但结果完全相同。
但是,我在这里想念什么?有什么建议么? 预先谢谢你!
答案 0 :(得分:1)
验证机器密钥。
如果授权服务器和资源服务器不在同一台计算机上,则OAuth中间件将使用不同的机器密钥来加密和解密承载访问令牌。为了在两个项目之间共享相同的私钥,我们在两个web.config文件中添加了相同的machinekey设置。