双重 HTTP 授权
Double HTTP Authorization
我目前正在做一个项目,为了简单起见,我决定在管理区域使用基本的 HTTP 授权,但是我工作的公司已经在他们的登台服务器上拥有 HTTP 授权,我想知道是否可以拥有双重 HTTP 授权?查看 headers 我认为 realm
部分定义了用户被授权的位置,但如果我目前这样实现它,在我输入登台服务器的凭据然后在我的内部授权上看起来像无限循环的东西开始了,页面永远不会加载。
这是否可能,或者我的代码中是否存在某种错误?
代码是非常基础的东西:
function require_auth() {
if (!isset($_SESSION['auth'])) {
if ($_SERVER['PHP_AUTH_USER'] === '...' && $_SERVER['PHP_AUTH_PW'] === '...') {
return $_SESSION['auth'] = true;
} else {
header('WWW-Authenticate: Basic realm="uniquerealm"');
header('HTTP/1.0 401 Unauthorized');
}
exit('403 access denied');
}
}
如果 HTTP 请求通过多个服务器,例如反向代理然后是应用服务器,您可以在每个服务器上使用 HTTP 基本身份验证,前提是您接受相同的用户名和密码并在每个服务器上报告相同的领域检查授权。 realm
将用户看到的 URL space 划分为不同区域,而不是像我认为您的问题所暗示的那样识别特定服务器。过去,当所有 3 个部分在服务器之间匹配时,我已经成功地在多层中实现了基本身份验证。
使用 python httpx_auth,我成功通过了两个具有不同凭据的基本 HTTP 身份验证:
import httpx
from httpx_auth import Basic
with httpx.Client() as client:
a= client.get('https://example.com', auth=Basic('user1', 'password1') + Basic('user2','password2'))
我目前正在做一个项目,为了简单起见,我决定在管理区域使用基本的 HTTP 授权,但是我工作的公司已经在他们的登台服务器上拥有 HTTP 授权,我想知道是否可以拥有双重 HTTP 授权?查看 headers 我认为 realm
部分定义了用户被授权的位置,但如果我目前这样实现它,在我输入登台服务器的凭据然后在我的内部授权上看起来像无限循环的东西开始了,页面永远不会加载。
这是否可能,或者我的代码中是否存在某种错误?
代码是非常基础的东西:
function require_auth() {
if (!isset($_SESSION['auth'])) {
if ($_SERVER['PHP_AUTH_USER'] === '...' && $_SERVER['PHP_AUTH_PW'] === '...') {
return $_SESSION['auth'] = true;
} else {
header('WWW-Authenticate: Basic realm="uniquerealm"');
header('HTTP/1.0 401 Unauthorized');
}
exit('403 access denied');
}
}
如果 HTTP 请求通过多个服务器,例如反向代理然后是应用服务器,您可以在每个服务器上使用 HTTP 基本身份验证,前提是您接受相同的用户名和密码并在每个服务器上报告相同的领域检查授权。 realm
将用户看到的 URL space 划分为不同区域,而不是像我认为您的问题所暗示的那样识别特定服务器。过去,当所有 3 个部分在服务器之间匹配时,我已经成功地在多层中实现了基本身份验证。
使用 python httpx_auth,我成功通过了两个具有不同凭据的基本 HTTP 身份验证:
import httpx
from httpx_auth import Basic
with httpx.Client() as client:
a= client.get('https://example.com', auth=Basic('user1', 'password1') + Basic('user2','password2'))