首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在intranet环境中,IE11覆盖更多的授权头

在intranet环境中,IE11覆盖更多的授权头
EN

Stack Overflow用户
提问于 2015-03-09 16:41:00
回答 1查看 2.3K关注 0票数 5

我在IE11中遇到了一个非常奇怪的问题,浏览器在我的请求中覆盖授权头,即使我是通过AngularJS设置它。

基本上,我为所有请求注册了一个HTTP拦截器,这些请求如下所示:

代码语言:javascript
复制
AuthInterceptorService.request = function (config) {
    config.headers.Authorization = "Bearer " + bearerToken;
}

这在所有浏览器(即使是在某些条件下的IE )中都很有效。我在IIS中将我的应用程序设置为允许匿名身份验证,并且禁用了这个子站点的基本/集成身份验证,但是父配置具有windows身份验证功能。

偶尔会发生的情况是,浏览器会向根URL请求静态文件(例如,/favicon.ico)。这项请求被401拒绝。浏览器通过协商身份验证进行响应,并获得首选图标。此时,所有其他浏览器仍然允许我的代码设置授权头,但是一旦在IE中进行了这种集成身份验证,授权头似乎就被卡住了--不管我的代码做了什么,授权头总是使用集成身份验证。这会导致对我的API的所有请求都失败,因为没有更多的令牌。

我能够通过指定一个更本地的图标(静态文件可以匿名服务)来解决这个问题,但是我想知道这个问题是否有一个不那么麻烦的解决方案。我能否以某种方式说服IE让我设置授权头,即使Windows身份验证是针对以前的请求进行的?

注意:我发现了这个问题,这似乎是相关的(可能是相同的潜在原因)。

EN

回答 1

Stack Overflow用户

发布于 2015-03-10 20:18:00

如果您查看RFC 4559文件的协商操作示例,它涉及到IE在使用IIS进行身份验证时协商安全性选择时使用的伪机制。

当客户第一次请求文档时,没有授权 标头被发送,因此服务器将用 HTTP/1.1 401未经授权的S: WWW-认证:协商 客户端将使用SPNEGO GSSAPI机制类型获得用户凭据,以确定生成要发送给 具有新请求的服务器,包括以下授权 标题: C:获取dir/index.html C:授权:协商a87421000492aa874209af8bc028 服务器将解码gssapi-数据并将其传递给SPNEGO。 gss_accept_security_context函数中的GSSAPI机制。如果上下文未完成,服务器将以401状态进行响应。 包含gssapi数据的WWW认证头代码。 HTTP/1.1 401未经授权的S: WWW-认证:协商749 efa7b23409c20b92356 客户端将解码gssapi-数据,将其传递给 Gss_Init_security_context,并将新的gssapi-数据返回给 服务器。

所以,我不认为在谈判进行的时候你可以混在一起,因为谈判过程是内在的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28947301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档