问题标签 [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 投票
1 回答
243 浏览

php - PHP www-authenticate 基本弹出循环问题

两天以来,我尝试在一个简单的示例代码中找到我的问题:

Auth Popup 可以正常打开,我发送用户和密码。但是弹出窗口一次又一次地打开。如果我取消弹出窗口,401 消息将正确显示。

我试图用 .htaccess 填充

但这没有任何改变。感谢您提出解决此问题的任何想法!

0 投票
1 回答
54 浏览

java - 有没有办法解决 RatpackPac4j#requireAuth 不设置 WWW-Authenticate 标头?

在 Ratpack (1.5.x) 应用程序的上下文中测试 Pac4j (2.x) 身份验证时,我发现当我使用此处理程序时:

...未经授权的请求以 401 状态被正确拒绝,并且RFC-7235声明WWW-Authenticate应添加标头,但事实并非如此。

我在此处的 RatpackPac4j 跟踪器上提出了一个问题,但由于 Pac4j v3 正确地实现了这一点,它被关闭为(我推断)“无法修复”。而且 RatpackPac4j 还没有升级到与 Pac4j v3 一起工作。

那么:是否可以插入一些对所有响应进行后处理的东西,例如,根据响应有条件地添加一个标头?

除了 - 我在我的 gradle 配置中使用以下版本:

0 投票
1 回答
352 浏览

java - 给定一个 Ratpack RequestFixture 测试,我怎样才能让夹具调用 Request#beforeSend?

这个问题是在 Ratpack RequestFixtureSpock 测试的上下文中,用于通过 进行身份验证的 Ratpack 链RatpackPac4j#requireAuth,并对缺少的WWW-Authenticate标头采用解决方法(如本问题的答案中所述)

我遇到的问题是,我发现从(的包装器)#beforeSend获得响应时似乎没有调用它。解决方法取决于此工作,因此我无法对其进行测试。有没有办法在返回的响应上调用?GroovyRequestFixture#handleRequestFixture#handle#beforeSendHandlingResult

例如,此测试用例会因断言存在WWW-Authenticate标头而失败,即使改编自此的代码在实际应用程序中调用时正确插入了标头。被测链是testChain,跳到最后失败的断言:

0 投票
0 回答
40 浏览

jquery - 当通过 AJAX 重定向收到 401 时,有没有办法在 Chrome 中删除 WWW-Authenticate?

我正在使用 AJAX 调用 IdP 服务,withCredentials = true。它返回带有重定向到另一个 URL 的表单的响应消息。仅在 Google chrome 中,它会提示输入我假设收到 401 的凭据,但我希望它失败,而不是提示输入凭据。

我在 Edge 中尝试了完全相同的代码,但它确实以 401 状态失败。没有凭据提示。此外,一些 stackoverflow 似乎暗示 WWW-Authenticate 需要被删除或黑客攻击,但这似乎破坏了已经就位的内置凭证协商 (OOTB)。

以下是两种浏览器(Edge 和 Chrome)中使用的片段

预期:在 Chrome 中,不应显示凭据提示。

实际:Chrome 显示凭据提示。

0 投票
1 回答
179 浏览

oauth - 应该对 WWW-Authenticate 领域参数进行编码吗?

在为 OAuth/ OAuth1a构建 WWW-Authenticate 标头值时,它要求对参数进行百分比编码。规范和实现对于realm参数是否应该进行百分比编码是模棱两可的。

5.4.1 节。规范的授权标头内容为:

OAuth 协议参数通过以下方式在授权标头中发送:

  1. 参数名称和值按照参数编码进行编码。
  2. 对于每个参数,名称后面紧跟一个 '=' 字符(ASCII 码 61)、一个 '"' 字符(ASCII 码 34)、参数值(可以为空)和另一个 '"' 字符(ASCII 码34)。
  3. 根据 [RFC2617],参数由逗号字符(ASCII 代码 44)和可选线性空格分隔。
  4. 根据 [RFC2617] 第 1.2 节添加和解释 OPTIONAL 领域参数。

例如:

如果这些步骤是按顺序执行的,那么似乎只有 OAuth 特定参数是要进行 url 编码的。

如果不打算按顺序执行这些步骤,则该realm参数可能包含在步骤 1 中。但是,OAuth1a规范中的 WWW-Authenticate 标头示例显示了realm="http://sp.example.com/"不是对冒号或斜杠进行百分比编码的领域。

更令人困惑的是,这似乎因实施而异。许多 OAuth 实现对参数没有特殊处理,只是对所有参数进行百分比编码,但其他 OAuth 实现对realm参数进行特殊处理并将其从百分比编码中排除。

realm将参数添加到 WWW-Authenticate 标头的正确行为是什么?

0 投票
1 回答
63 浏览

angular - 对于失败的基本身份验证方案,如何关闭浏览器自动打开的登录弹出窗口?

我正在从我的 Angular 6 应用程序向服务器发出 HTTP 发布请求以获取身份验证令牌。服务器在发布令牌之前使用基本身份验证方案来验证用户名和密码。401 unauthorized error如果登录不正确username,服务器会响应。password与 一起401 error,服务器返回www-authenticate: Basic realm={some message}标头。浏览器会自动弹出一个登录对话框来输入usernamepassword登录失败。我不想在服务器中进行任何更改,而是想在我的 Angular 应用程序中处理这个弹出窗口。

我希望在登录失败时禁用此弹出窗口,而是想在我的角度应用程序本身中处理错误。

那可能吗?

如果是,如何?

0 投票
2 回答
34798 浏览

browser - 如何使用浏览器发送授权标头

我已经实现了一个使用基本身份验证(使用 spring security)的 web 服务器。

我在访问 URL 时禁用了默认身份验证入口点(而不是使用 www-authentication 标头响应 401,它只返回 401),目的是防止浏览器显示身份验证弹出窗口。

我可以使用 javascript 代码和 curl 等命令行工具连接到服务器,但是当我使用浏览器(chrome 和 firefox)对其进行测试时,它们只是不发送标头。

curl -v -u user:password localhost:8080/user

GET /user HTTP/1.1
主机:localhost:8080
授权:基本 dXNlcjpwYXNzd29yZA==
用户代理:curl/7.58.0
接受:/

Chrome:版本 71.0.3578.98(官方构建)(64 位)
http://user:password@localhost:8080/user

GET /user HTTP/1.1
主机:localhost:8080
连接:keep-alive
Upgrade-Insecure-Requests:1
用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ 71.0.3578.98 Safari/537.36
DNT: 1
接受:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng, / ;q=0.8
Accept-Encoding: gzip, deflate, br 接受语言:en-AU,en;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5

为什么浏览器不发送身份验证标头。

0 投票
1 回答
151 浏览

http - 在 www-authenticate 标头中指定多个身份验证方案

RFC 7235指出此标头提供两种身份验证机制:

我在解析这个语法时遇到问题,而 RFC 没有帮助,因为它没有描述它。如果应用程序应该尝试这样做,我不能只尝试用逗号分隔,因为它既用于分隔身份验证机制及其参数。

如果我要使用正则表达式找到每个身份验证机制的开始,我的理解是否正确\w+ realm=

0 投票
1 回答
777 浏览

nginx - www-authenticate 的 nginx 反向代理问题

我想使用 nginx 反向代理将传入的 http 请求路由到本地端口 8081,但在 8081 上运行的应用程序需要 www-authenticate 标头授权,邮递员给我状态 401“身份验证失败”(图 1)。但是当我使用 Apache httpd 进行反向代理时,我成功地得到了结果。

www-authenticate 失败 Postman 结果 nginx www-authentication

这里它适用于另一个使用基本身份验证的请求 Postman 结果 nginx 基本类型认证

这是我的 nginx.conf

请帮助我解决这个问题,因为我不熟悉 nginx,nginx 版本 1.16

0 投票
1 回答
603 浏览

apache - 反向代理以删除摘要身份验证

我已经在寻找解决方案的日子,但我找不到任何东西。我有一些 IP 摄像机(大华)没有未经授权的、可以说是公开查看的选项。我现在正在寻找可以执行以下操作的代理服务器:

  1. 连接到 IP 摄像机流 (MJPEG)
  2. 如果相机返回 401,则代理必须使用保存的用户名和密码登录
  3. 传输 IP 摄像机流

我可以通过添加 Authorization 标头使用 nginx 来完成此操作,但这是困难的部分,只有当相机使用基本身份验证时。

但是,某些模型仅支持非静态的摘要式身份验证。

有人可以指点我一些可以做到这一点的软件或 nginx/apache 插件吗?我正在寻找类似https://github.com/jantman/python-amcrest-noauth-proxy但用 C 编写的东西,以便我可以在 OpenWRT 嵌入式设备上运行它。

亲切的问候,大安