首页 文章

IE11用Negotiate替换了承载令牌

提问于
浏览
0

我们在Angular 4前端和.NET Core 1.0服务中有一个应用程序 . WEB API请求是使用带有JWT承载令牌的http.request从Angular发出的 . 这是一个相对较大的应用程序,所有HTTP请求都通过Angular中的公共服务进行路由 . 它适用于所有环境中的Chrome和FF . 但是,无论何时用户使用IE11,它都会在 生产环境 环境中间歇性地抛出未经授权的错误 . 它适用于在开发环境(Windows 7,64位),DEV测试环境(Windows Server 2008 R2,64位,与dev相同的域),QA环境(Windows Server 2008 R2, 64位,与dev相同的域),测试安装程序(Windows Server 2008 R2,64位,与 生产环境 相同的域),模拟站点(Windows Server 2008 R2,64位,与 生产环境 相同的域) . 但它为某些用户在IE11中的预 生产环境 和 生产环境 (Windows Server 2008 R2,64位)中引发了间歇性错误 . 前端站点配置为匿名和Windows身份验证 . Webservice配置为匿名使用承载令牌 . Web API启动具有以下授权策略:var policy = new AuthorizationPolicyBuilder() . RequireAuthenticatedUser() . Build();

当我们分析Fiddler中的调用时,我们发现投掷401的请求具有Negotiate而不是bearer token的授权 . 当我们启动网站时,它没有任何问题,并且工作了一段时间但开始发送授权:在几个请求之后进行协商 . 我为Angular中的所有HTTP调用添加了大约100ms的延迟,在WEB API响应头中放置了no-cache,没有任何东西可以解决问题 . 此问题仅发生在IE11 生产环境 和预 生产环境 环境中的某些用户 . 但他们可以在IE11中使用其他环境而不会出现任何问题 . 另一个有趣的因素是,预 生产环境 适用于某些用户,同一个用户在 生产环境 中遇到问题,反之亦然,两者都在同一个域中但在不同的框中 . 生产环境 是唯一一个拥有有效SSL证书的其他站点(开发除外)具有自签名证书 . 在WEB API中为配置文件中提到的URL启用CORS . 我正在寻求帮助 . 非常感谢任何输入

1 回答

  • 0

    我们已关注@JoshuaBarron reply并在站点级别启用了匿名访问 . 这解决了这个问题 . 我们错过了在网站级别进行 生产环境 和预 生产环境 的匿名访问 . 不幸的是,我们无法访问那里进行任何改动 .

相关问题