nginx - 在 nginx 上使用 kerberos 时如何禁用基本身份验证?
问题描述
前言
在问题的主体中,问题描述不正确。正确的解释在 UPDATE 块中描述。为历史保存的旧文本。
我的项目由两部分组成:后端和前端。以下位置负责重定向请求:
location / { root /opt/site/; try_files $uri $uri/ /index.html; } location /adminpanel { proxy_pass http://192.168.1.4:4567; } location /api { proxy_pass http://192.168.1.4:4567; }
/auth
如果没有用户登录,则挑战是将用户重定向到 url $remote_user header
。我尝试进行以下构造:在http中我添加了:
map $remote_user $var {
default 0;
"" 1;
}
并在位置/
添加:
if ($var) {
return 301 http://$server_name/auth;
}
当我尝试进入该网站时,我的浏览器中出现错误:
ERR_TOO_MANY_REDIRECTS
如何修复我的配置文件?
提前致谢!!!
更新
我的任务是在 nginx 上配置 Kerberos 身份验证。后端是django。这个想法是,当向 api 发出请求时,nginx 应该执行 kerberos 身份验证。但是如果用户不在域中,则/auth
必须重定向到授权页面,以便用户可以在 django CMS 中注册的帐户下进行身份验证。
域用户认证成功。但是非域用户存在问题。当您打开进行 api 调用的站点页面时,会出现一个基本身份验证窗口。我使用该auth_gss_allow_basic_fallback off
指令,但这无济于事。
如何禁用此功能并将重定向配置为/auth
?
我的配置文件(我没有指定gzip、headers等设置):
server {
listen 80;
server_name srv-01.example.com;
proxy_set_header remote-user $remote_user;
location / {
root /opt/site/;
try_files $uri $uri/ /index.html;
}
location /adminpanel {
proxy_pass http://192.168.1.4:4567;
}
location /api {
proxy_pass http://192.168.1.4:4567;
auth_gss on;
auth_gss_realm EXAMPLE.COM;
auth_gss_keytab /etc/krb5.keytab;
auth_gss_service_name HTTP/srv-01.example.com;
auth_gss_allow_basic_fallback off;
}}
解决方案
推荐阅读
- spring - 使用 SpringBoot 和 JSP 获取 Whitelabel 错误页面
- python - 从 Python 2 迁移到 3 时出现 Tensorflow 输入馈送错误
- python - 如果 Selenium 中不存在元素,如何跳过
- swift - 如何每月最多显示一次 iOS 的区域通知?
- excel - 用于多个标签的 Excel 数据透视表
- javascript - 我可以在 Bulma 中使用新的 CSS 自定义属性(变量)吗?
- c++ - 如何在 Ubuntu 上提高我的程序磁盘读取速度?
- http - HTTP 响应是否指示接收者的地址或类似的地址?
- php - 在 PHP 中将字符串编码为文件路径片段
- javascript - 使用箭头键递增