Authentication 验证请求模块的缓存结果,由用户名键入
我正在运行Kubernetes仪表板,作为其身份验证方法之一,它将允许您使用其中的承载令牌。令牌必须是承载令牌,即Authentication 验证请求模块的缓存结果,由用户名键入,authentication,nginx,kubernetes,basic-authentication,pam,Authentication,Nginx,Kubernetes,Basic Authentication,Pam,我正在运行Kubernetes仪表板,作为其身份验证方法之一,它将允许您使用其中的承载令牌。令牌必须是承载令牌,即授权:承载 我还作为身份验证服务运行。它使用HTTP基本身份验证来查询PAM以获取用户的组,并使用该组构造一个承载令牌。在看到以下回答后,我对其进行了轻微修改,以在授权标题中返回承载令牌,该回答告诉我,您需要在标题中包含该令牌,以便我尝试执行以下操作: 我有一个前置代理(nginx),它使用来保护仪表板。当然,我可以让nginx将Authorization:Basic头从此转发到pa
授权:承载
我还作为身份验证服务运行。它使用HTTP基本身份验证来查询PAM以获取用户的组,并使用该组构造一个承载令牌。在看到以下回答后,我对其进行了轻微修改,以在授权
标题中返回承载令牌,该回答告诉我,您需要在标题中包含该令牌,以便我尝试执行以下操作:
我有一个前置代理(nginx),它使用来保护仪表板。当然,我可以让nginx将Authorization:Basic
头从此转发到pam_hook,pam_hook可以在Authorization:bearer
头中使用承载令牌进行回复
然而,我有两个问题:
http {
proxy_cache_path /tmp/cache levels=1:2 keys_zone=authentication:10m inactive=15m;
proxy_cache_valid 200 15m;
include /etc/nginx/conf.d/pam.conf;
include /etc/nginx/conf.d/upstream.conf;
}
pam.conf:
auth_pam "Log in please";
auth_pam_service_name "nginx";
upstream.conf:
upstream backend {
server localhost:9090
}
server {
listen 443 default_server;
location @upstream {
proxy_pass https://backend;
proxy_redirect off;
}
include /etc/nginx/conf.d/basic_auth_proxy.conf;
location / {
root /dev/null;
try_files $uri @upstream;
auth_request /basicauthproxy;
auth_request_set $authorization_header $upstream_http_authorization;
proxy_set_header Authorization $authorization_header;
}
}
basic_auth_proxy.conf:
location /basicauthproxy {
internal;
proxy_pass https://pamhook/token;
proxy_cache authentication;
proxy_cache_key $cookie_authentication;
proxy_pass_request_body off;
proxy_hide_header Set-Cookie;
proxy_ignore_headers Set-Cookie;
proxy_set_header Cookie "";
proxy_set_header Host $host;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
我现在得到的行为是,提示我输入基本身份验证,传递我的凭据,成功,然后仪表板获取转发的请求。。。但是授权
头包含来自代理的基本身份验证信息,而不是承载令牌。我错过了什么才能让它发挥作用
编辑:我增加了pam_hook日志的详细内容。它没有收到nginx的任何请求。所以这可能是第一个要解决的问题,但我并不理解为什么会发生这种情况。我知道我可以从nginx容器中卷曲pam_hook,所以这不是一个糟糕的网络策略问题