nginx - Apache Zeppelin websockets 是否经过身份验证?
问题描述
按照这里的指导...
https://zeppelin.apache.org/docs/0.8.2/setup/security/authentication_nginx.html
我使用 nginx.conf(几乎)逐字逐句在 Nginx 代理后面部署 Zeppelin,以通过 nginx 作为我内部未受保护的 Zeppelin 实例的代理通过 https 实现基本身份验证。我的意图是通过使用 https 到 nginx 来实现机密性,并且上游内部通信未加密——假设所有外部通信都经过加密和身份验证。我从这个 Zeppelin 站点的印象是,他们在这里的指导通过合理但保守的现代安全标准来实现。
我担心 nginx 身份验证代理无法为 websocket 端点实现它对 https 端点的作用。我的问题(主要针对 Zepp 贡献者)是,这是否建议 Nginx 身份验证和 https 配置可以保护 websocket 通道免遭未经授权的使用?Zeppelin 服务器是否通过 /ws uri 连接到它的客户端进行身份验证?
通过启用 Zepellin 内部的身份验证系统,此处的链接 #2 听起来像 websockets /can/ 是“安全的”。然而,这似乎与 Zeppelin 团队在第一个链接中提出的更好的建议背道而驰,他们建议将身份验证和 Zeppelin 问题分开。
https://zeppelin.apache.org/docs/0.6.2/security/shiroauthentication.html
那么,Zeppelin 是否可以通过使用 Nginx 的 https 设置在基本身份验证之后得到强化(与基本身份验证一样难)?换句话说,Zeppelin 是否会在 ed 中验证 websocket 客户端,或者是否可以欺骗 nginx 验证的 Zeppelin 前端,从而可以在 nginx 不需要密码的情况下建立 websocket 连接?如何更改此 nginx.conf 以实现非 https、非 wss Zeppelin 上游服务器的安全 nginx 代理?
upstream zeppelin {
server 192.168.1.200:38080;
}
server {
listen 443 ssl;
server_name mysite.com;
ssl_certificate /etc/nginx/key/nginx_20191222.crt;
ssl_certificate_key /etc/nginx/key/nginx_20191222.key;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://zeppelin;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
auth_basic "Private site";
auth_basic_user_file conf.d/passwd;
}
location /ws {
proxy_pass http://zeppelin;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; #websocket;
proxy_set_header Connection upgrade;
proxy_read_timeout 86400;
}
}
解决方案
推荐阅读
- css - Angular ng-container 未显示值
- c# - c# 从 3d 位置、单位向量和维度获取对象的 2d 绘图点
- sql - SQL Case 当至少一个值等于 value 然后设置为 value
- python - 如何将实时音频实时馈送到 keras 模型?
- ruby-on-rails - 如何使设计不需要对主页进行身份验证?
- mysql - 使用 mysql.connector 连接到 MySQL 数据库时出错
- sql - PostgreSQL 从数组中的数组中选择
- python - 如何破译此 Tensorflow 错误消息?
- python - 如何应用 eval 一个字符串列表
- continuous-integration - 尝试将 gitlab 配置为在修改子文件夹中的文件时跳过 MERGE REQUESTS 和 COMMITS 上的 CI 管道