问题标签 [www-authenticate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2062 浏览

kerberos - WWW-Authenticate 使用 NTLM 而不是 Kerberos

我在 Windows Server 2008 上运行 NodeJS 服务器。

服务器没有做太多,但我将标头设置为 401,WWW-Authenticate Negotiation,我知道它可以使用他的默认 Kerberos 身份验证,或者如果它不可用,则使用 NTLM。

我下载了 fiddler 并发现当我尝试访问服务器时,它会尝试使用 NTLM(提示我输入用户名和密码)而不是 Kerberos 进行身份验证,即使计算机与服务器位于同一域并且当我运行命令时“klist”它确实告诉我他有令牌,这意味着他已经通过 Kerberos 进行了身份验证(不是吗?)。

我的问题是如何让它使用 Kerberos 而不是 NTLM 进行身份验证 - 为什么他首先要使用 NTLM?

有任何想法吗?

0 投票
1 回答
2804 浏览

ajax - 为没有 WWW-Authenticate 的 AJAX 响应返回 HTTP 401 状态

如果您希望传达用户未登录的信息,是否可以返回HTTP 401状态以响应 AJAX 调用,即使登录机制是基于表单而不是基于 HTTP(基本、摘要等) ?

这里的答案表明应该使用 401: https ://stackoverflow.com/a/6937030/2891365

这篇文章显示了一个使用 401 进行 AJAX 响应的实际示例:http ://www.bennadel.com/blog/2228-some-thoughts-on-handling-401-unauthorized-errors-with-jquery.htm

但是,针对 HTTP/1.1 的 RFC 2616明确指出需要一个特殊的标头,这意味着它只能用于 HTTP 身份验证。

10.4.2 401 未经授权

该请求需要用户身份验证。响应必须包含一个WWW-Authenticate标题字段(第 14.47 节),其中包含适用于所请求资源的质询。

我想我可能可以发送一个虚假的标题,WWW-Authenticate: WebForm并且仍然符合 W3C 规范,但感觉它违反了WWW-Authenticate标题的精神。

最后,我似乎找不到明确说明 HTTP 401 是否允许用于 AJAX 响应的权威来源。有没有我错过的权威来源?

0 投票
0 回答
4229 浏览

c# - 如何使用 Dot-NET HttpClient 获取完整的 WWW-Authenticate 标头?

设想

我正在为 Windows Phone 8 开发一个 Web 程序(我认为这并不重要)并使用Microsoft HTTP 客户端库

问题

当用户尝试获取 URL 时,我需要知道响应为 401 时需要哪种类型的身份验证。如果是 NTLM、Basic、Digest 等,这很容易;所有受支持的WinHTTP方案。您可以使用以下代码获取 URL:

检查需要哪种身份验证的最简单方法是使用该Headers.WwwAuthenticate.Contains方法,例如检查是否NTLM需要方案:

如果是scheme = "Bearer"那么它总是给出错误的。

获取响应头

以下是在尝试访问需要Azure Active Directory身份验证的服务器时获得的。

杰森 Chrome 应用程序

使用Jason Chrome 应用程序 从网络服务器获取响应标头,我收到:

点网 Http 客户端

使用 HttpClient System.Net.Http.HttpResponseMessage( response) 给出:

WWW-认证比较

根据以上结果,可以进行以下比较。

杰森 Chrome 应用程序

Bearer authorization_uri="https://login.windows.net/common", error="invalid_token", error_description="访问令牌丢失",

NTLM

点网 Http 客户端

NTLM

Bearer 部分被 Http 客户端丢弃(或者这可能是 的限制HttpResponseMessage),只剩下 NTLM 身份验证。

问题

如何或在哪里使用显示所有方案及其内容的 Dot-NET HttpClient 获取完整的 WWW-Authenticate 标头?此示例特定于 Bearer;但是,也存在其他(自定义)方案。

有任何想法吗?


额外的

即使在Windows.Web.Http.HttpClient上,同样的问题似乎仍然存在

0 投票
1 回答
3671 浏览

asp.net-web-api - 使用 WebAPI 中的 Jwt Bearer Authentication 中间件自定义 WWW-Authenticate 质询标头

我在 .NET WebAPI 项目中使用 JwtBearerAuthentication Katana 中间件通过 JWT 保护我的 Web API。

所以,在我的 Startup 课程中,我只是在做一些简单的事情,比如:

一切都很好,只有一个例外。

当客户端传入无效或丢失的承载令牌时,WWW-Authenticate 响应标头只是“承载”。

我想自定义该标头以包含我的授权服务器的地址和支持的授权类型。

更像是: WWW-Authenticate: MyAuth href=url,grant_type="supported-grants" 或其他...

做这个的最好方式是什么?我很惊讶 JwtBearerAuthenticationOptions 类不包含 Challenge 属性。我可以解决这个问题,但想知道 Jwt 中间件是否有最佳实践。

0 投票
1 回答
5085 浏览

java - WWW-Authentication / NTLM 使用具有当前用户凭据的 HttpClient 进行协商

寻找有关如何让 HttpClient (httpclient 4.3.6) 向 IIS REST 服务验证当前用户的指针。

我可以使用 UrlConnection 连接没有问题,因为它似乎可以开箱即用地处理 WWW-Authentication 协议。

我已经转移到 HttpClient 以利用多部分 POST/PUT (FileEntity) 并且我发现 HttpClient 不处理 WWW-Authentication,它只是以 401 失败,这是该过程的第一部分。

我发现了一些提供 NTLM 凭据等的示例……但我不想捕获凭据,我想使用当前的 Windows 身份执行请求。

是否有一些代码或 API 可以用来代表我进行管理?我不想捕获用户名和密码,我只想提供当前用户凭据。我需要使用像 SPNEGO 这样的 3rd 方库吗?

提前谢谢了

0 投票
2 回答
1304 浏览

jmeter - 带有 www-Authenticate Basicrealm="Secured Area" 的 Jmeter

我正在使用 Jmeter 进行性能测试,当我尝试重播请求时,我得到以下响应标头

我正在使用带有以下信息库 url 的 HTTP 授权管理器 - example.com 用户名 - 用户名密码 - 种类域 - example.com:80 领域 - Mech - Basic_digest

正文大小(以字节为单位):0 样本计数:1 错误计数:1 响应代码:401 响应消息:未经授权

响应标头:HTTP/1.0 401 未经授权 的 WWW-Authenticate:基本领域 =“安全区域” 服务器:BigIP 连接:保持活动内容长度:0

关于我应该尝试不同的任何想法

谢谢

0 投票
1 回答
432 浏览

php - Google App Engine 上的 HTTP 身份验证

我希望验证我的 Google App Engine (GAE) 网站,制作“仅限会员”页面。我希望将 Google SQL 表中的电子邮件/成员 ID 与 HTTP 身份验证弹出框中的数据输入相匹配,但我遇到了困难。下面是我的 PHP 的概要:

似乎 SERVER['PHP_AUTH_USER'] 从未设置,表明 PHP 在 CGI 模式下运行。如何在 Google App Engine 上进行这项工作?还有其他地方显示了有关如何在 CGI 模式下获得 HTTP 身份验证的说明(请参阅此处http://www.besthostratings.com/articles/http-auth-php-cgi.html),但它们都指的是 . htaccess 文件,我认为 GAE 不使用它(它使用 .yaml 文件代替)。我可以制作一个身份验证页面,但希望我可以通过不太容易受到攻击的方式进行身份验证。

0 投票
0 回答
127 浏览

scala - 当您同时允许匿名访问和登录用户时,如何处理匿名登录尝试?

我有一个允许匿名访问以及命名用户帐户的框架。我在某个 URL 上公开 OData 资源。当这样配置时,匿名用户可以看到部分资源,登录用户(通过基本身份验证)可以看到更多。

我面临的问题是某些 OData 客户端(如 Excel)最初会尝试匿名访问 OData 资源,即使您确实提供了凭据。只有当这失败时,他们才会使用提供的凭据。我的理解是,这是因为有很多登录方式,而有些客户总是先尝试最基本的选项。但这会阻止他们实际看到更多数据,因为他们从不使用提供的凭据,并且在资源允许匿名访问时也永远不会获得身份验证挑战。

有没有办法解决这个问题,允许匿名访问并在可能的情况下正确发送身份验证质询?当客户确实拥有凭据但最初没有提供它们时,是否可能会发送一些标头?

一些(scala)代码使这更加有形:

周围的 try/catch 之外的其他地方:

如您所见,当允许匿名访问时,永远不会发送质询。

编辑:我们进行了调查,该请求的标头中似乎没有任何特别之处表明这是一个初始尝试,当发送身份验证质询时将导致另一个请求,而不仅仅是另一个匿名登录尝试。我们现在在这里不知如何进行。

0 投票
1 回答
277 浏览

angularjs - Spring Security (4.0.1) 与 AngularJS 的集成。每次用户输入无效凭据时都会弹出基本身份验证

我正在尝试将 Spring Security (4.0.1) 与 AngularJS 集成。我能够使用基于 XML 的配置进行基本身份验证。问题是,每次用户输入无效凭据时,Web 浏览器都会显示弹出窗口。我尝试使用普通的 ServletFilters 以及使用基于 Spring 安全性的自定义过滤器来删除 WWW-Authenticate repsone 标头。还没有成功。有人可以帮我吗?

0 投票
1 回答
706 浏览

http-headers - 需要身份验证的站点是否应该始终发送 WWW-Authenticate HTTP 响应标头?

我最近尝试访问始终需要身份验证的站点(AEM 作者服务器)。我试图在浏览器地址栏中的 URL 中使用基本身份验证,如下所示: http://admin:admin@localhost:4502/

但是当我尝试这样做时,我得到了以下安全确认(在 Firefox 38.0.1 中): 在此处输入图像描述

单击“是”将我带到未经身份验证的登录页面,似乎忽略了我发送的基本身份验证凭据。以下问题(及其评论)帮助我理解这是因为 AEM 作者服务器没有要求身份验证凭据——它没有发送 WWW-Authenticate HTTP 响应标头:

因此,浏览器实际上并没有发送我放在地址栏中的基本身份验证凭据。

所以这让我质疑为什么总是需要身份验证的 AEM 作者服务器不发送 HTTP WWW-Authenticate 标头。但这引出了一个更大的问题:

对于始终需要身份验证的站点,期望该站点始终发送 WWW-Authenticate 响应标头是否合理,或者即使确实需要身份验证,是否有正当理由不包含此标头?