elasticsearch 用于基本身份验证登录的oauth2_proxy

sbdsn5lh  于 2023-02-11  发布在  ElasticSearch
关注(0)|答案(1)|浏览(196)

我尝试在安装ELK之前设置OAuth2授权。我使用oauth2_proxy。想法是使用Google作为SSO,从SSO挑战中提取用户名,将此用户名设置为基本授权(使用固定密码)以登录Kibana。
我在获取用户名并将其设置为基本的auth字符串时遇到了困难。看起来变量$remote_user没有赋值。如果我硬编码了一个有效的用户名:密码,它会让我登录。
这是我目前的配置:

  • 在端口4180上运行的oauth2_proxy
  • nginx在80/443上侦听,代理传递到本地主机:4180(oauth2_proxy)
  • 使用localhost:8080作为上游执行SSO的oauth2_proxy(nginx)
  • nginx在8080上侦听,代理传递到localhost:5601(kibana)

大概是这样的

下面是conf文件:

    • oauth2_proxy启动字符串**
oauth2-proxy  
    --email-domain="example.com"  
    --upstream="http://127.0.0.1:8080/"  
    --approval-prompt="auto"  
    --redirect-url="https://example.com/oauth2/callback"  
    --cookie-secret=redacted
    --set-xauthrequest=true 
    --pass-user-headers=true 
    --pass-authorization-header=true
    • 授权2代理配置文件**
server {
    listen 443 ssl;
    server_name example.com;

    location / {
      proxy_pass http://127.0.0.1:4180;
    }

    [letsencrypt config omitted]
}
    • kibana.配置**
server {
    listen 8080;

    location / {
      proxy_pass http://127.0.0.1:5601;

      set $auth_string  "${remote_user}:<my_strong-password>";
      set_encode_base64 $encoded_string $auth_string;

      proxy_set_header Authorization "Basic $encoded_string";

      #to manage logout redirect
      rewrite /login https://example.com/oauth2/sign_in redirect;
    }
}

我的问题是${remote_user}是空的,我怎么才能稳定它呢?我也试过$upstream_http_x_auth_request_user$upstream_http_x_auth_request_email,但没有成功。
您是否发现任何明显的错误?

uxh89sit

uxh89sit1#

如果你在nginx配置中指定了固定密码,为什么你需要提取用户名?
相反,你可以在Kibana配置中启用匿名访问,并摆脱nginx代理。https://stackoverflow.com/a/75416817/3758005

相关问题