diff --git a/docs/assets/themes/zeppelin/img/screenshots/authentication-basic-auth-nginx-https.png b/docs/assets/themes/zeppelin/img/screenshots/authentication-basic-auth-nginx-https.png deleted file mode 100644 index 46767ed067a..00000000000 Binary files a/docs/assets/themes/zeppelin/img/screenshots/authentication-basic-auth-nginx-https.png and /dev/null differ diff --git a/docs/assets/themes/zeppelin/img/screenshots/authentication-basic-auth-nginx-request.png b/docs/assets/themes/zeppelin/img/screenshots/authentication-basic-auth-nginx-request.png deleted file mode 100644 index 6c24073f44c..00000000000 Binary files a/docs/assets/themes/zeppelin/img/screenshots/authentication-basic-auth-nginx-request.png and /dev/null differ diff --git a/docs/security/authentication.md b/docs/security/authentication.md index 91406e0aecc..9d48c58b983 100644 --- a/docs/security/authentication.md +++ b/docs/security/authentication.md @@ -34,11 +34,12 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c 1. Install NGINX server on your server instance - You can install NGINX server with same machine where zeppelin installed or separate machine where it is dedicated to serve as proxy server. + You can install NGINX server with same box where zeppelin installed or separate box where it is dedicated to serve as proxy server. ``` $ apt-get install nginx ``` + *Important: On pre 1.3.13 version of NGINX, Proxy for Websocket may not fully works. Please use latest version of NGINX. See: [NGINX documentation](https://www.nginx.com/blog/websocket-nginx/)* 1. Setup init script in NGINX @@ -46,30 +47,30 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c ``` $ cd /etc/nginx/sites-available - $ touch my-basic-auth + $ touch my-zeppelin-auth-setting ``` - Now add this script into `my-basic-auth` file. You can comment out `optional` lines If you want serve Zeppelin under regular HTTP 80 Port. + Now add this script into `my-zeppelin-auth-setting` file. You can comment out `optional` lines If you want serve Zeppelin under regular HTTP 80 Port. ``` upstream zeppelin { - server [YOUR-ZEPPELIN-SERVER-IP]:8080; + server [YOUR-ZEPPELIN-SERVER-IP]:[YOUR-ZEPPELIN-SERVER-PORT]; # For security, It is highly recommended to make this address/port as non-public accessible } # Zeppelin Website server { listen [YOUR-ZEPPELIN-WEB-SERVER-PORT]; - listen 443 ssl; # optional, to serve HTTPS connection - server_name [YOUR-ZEPPELIN-SERVER-HOST]; # for example: zeppelin.mycompany.com + listen 443 ssl; # optional, to serve HTTPS connection + server_name [YOUR-ZEPPELIN-SERVER-HOST]; # for example: zeppelin.mycompany.com ssl_certificate [PATH-TO-YOUR-CERT-FILE]; # optional, to serve HTTPS connection ssl_certificate_key [PATH-TO-YOUR-CERT-KEY-FILE]; # optional, to serve HTTPS connection if ($ssl_protocol = "") { - rewrite ^ https://$host$request_uri? permanent; # optional, force to use HTTPS + rewrite ^ https://$host$request_uri? permanent; # optional, to force use of HTTPS } - location / { + location / { # For regular websever support proxy_pass http://zeppelin; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -80,7 +81,7 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c auth_basic_user_file /etc/nginx/.htpasswd; } - location /ws { + location /ws { # For websocket support proxy_pass http://zeppelin; proxy_http_version 1.1; proxy_set_header Upgrade websocket; @@ -93,7 +94,7 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c Then make a symbolic link to this file from `/etc/nginx/sites-enabled/` to enable configuration above when NGINX reloads. ``` - $ ln -s /etc/nginx/sites-enabled/my-basic-auth /etc/nginx/sites-available/my-basic-auth + $ ln -s /etc/nginx/sites-enabled/my-zeppelin-auth-setting /etc/nginx/sites-available/my-zeppelin-auth-setting ``` 1. Setup user credential into `.htpasswd` file and restart server @@ -102,11 +103,11 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c ``` $ cd /etc/nginx - $ htpasswd -c htpasswd [YOUR_ID] - $ NEW passwd: [YOUR_PASSWORD] - $ RE-type new passwd: [YOUR_PASSWORD_AGAIN] + $ htpasswd -c htpasswd [YOUR-ID] + $ NEW passwd: [YOUR-PASSWORD] + $ RE-type new passwd: [YOUR-PASSWORD-AGAIN] ``` - Or you can use your own apache `.htpasswd` files in other location by setup property `auth_basic_user_file` + Or you can use your own apache `.htpasswd` files in other location for setting up property: `auth_basic_user_file` Restart NGINX server. @@ -115,9 +116,6 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c ``` Then check HTTP Basic Authentication works in browser. If you can see regular basic auth popup and then able to login with credential you entered into `.htpasswd` you are good to go. - - - 1. More security consideration * Using HTTPS connection with Basic Authentication is highly recommended since basic auth without encryption may expose your important credential information over the network.