You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/security/authentication.md
+8-7Lines changed: 8 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,11 +19,12 @@ limitations under the License.
19
19
-->
20
20
# Authentication for NGINX
21
21
22
-
Authentication is company-specific.
22
+
<divid="toc"></div>
23
23
24
-
One option is to use [Basic Access Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication)
24
+
Authentication is company-specific.
25
+
One option is to use [Basic Access Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication).
25
26
26
-
###HTTP Basic Authentication using NGINX
27
+
## HTTP Basic Authentication using NGINX
27
28
28
29
> **Quote from Wikipedia:** NGINX is a web server. It can act as a reverse proxy server for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer and an HTTP cache.
29
30
@@ -39,7 +40,7 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c
39
40
```
40
41
$ apt-get install nginx
41
42
```
42
-
*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/)*
43
+
> **NOTE :** 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/).
43
44
44
45
1. Setup init script in NGINX
45
46
@@ -119,12 +120,12 @@ This instruction based on Ubuntu 14.04 LTS but may work with other OS with few c
119
120
1. More security consideration
120
121
121
122
* Using HTTPS connection with Basic Authentication is highly recommended since basic auth without encryption may expose your important credential information over the network.
122
-
* Using [Shiro Security feature built-into Zeppelin](https://github.com/apache/zeppelin/blob/master/SECURITY-README.md) is recommended if you prefer all-in-one solution for authentication but NGINX may provides ad-hoc solution for re-use authentication served by your system's NGINX server or in case of you need to separate authentication from zeppelin server.
123
+
* Using [Shiro Security feature built-into Zeppelin](./shiroauthentication.html) is recommended if you prefer all-in-one solution for authentication but NGINX may provides ad-hoc solution for re-use authentication served by your system's NGINX server or in case of you need to separate authentication from zeppelin server.
123
124
* It is recommended to isolate direct connection to Zeppelin server from public internet or external services to secure your zeppelin instance from unexpected attack or problems caused by public zone.
124
125
125
-
### Another option
126
+
## Another option
126
127
127
128
Another option is to have an authentication server that can verify user credentials in an LDAP server.
128
129
If an incoming request to the Zeppelin server does not have a cookie with user information encrypted with the authentication server public key, the user
129
130
is redirected to the authentication server. Once the user is verified, the authentication server redirects the browser to a specific URL in the Zeppelin server which sets the authentication cookie in the browser.
130
-
The end result is that all requests to the Zeppelin web server have the authentication cookie which contains user and groups information.
131
+
The end result is that all requests to the Zeppelin web server have the authentication cookie which contains user and groups information.
Copy file name to clipboardExpand all lines: docs/security/notebook_authorization.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,9 @@ limitations under the License.
19
19
-->
20
20
# Zeppelin Notebook Authorization
21
21
22
+
<divid="toc"></div>
23
+
24
+
## Overview
22
25
We assume that there is an **Shiro Authentication** component that associates a user string and a set of group strings with every NotebookSocket.
23
26
If you don't set the authentication components yet, please check [Shiro authentication for Apache Zeppelin](./shiroauthentication.html) first.
24
27
@@ -44,12 +47,12 @@ If someone who doesn't have **read** permission is trying to access the notebook
44
47
## How it works
45
48
In this section, we will explain the detail about how the notebook authorization works in backend side.
46
49
47
-
####NotebookServer
50
+
### NotebookServer
48
51
The [NotebookServer](https://github.com/apache/zeppelin/blob/master/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java) classifies every notebook operations into three categories: **Read**, **Write**, **Manage**.
49
52
Before executing a notebook operation, it checks if the user and the groups associated with the `NotebookSocket` have permissions.
50
53
For example, before executing a **Read** operation, it checks if the user and the groups have at least one entity that belongs to the **Reader** entities.
51
54
52
-
####Notebook REST API call
55
+
### Notebook REST API call
53
56
Zeppelin executes a [REST API call](https://github.com/apache/zeppelin/blob/master/zeppelin-server/src/main/java/org/apache/zeppelin/rest/NotebookRestApi.java) for the notebook permission information.
54
57
In the backend side, Zeppelin gets the user information for the connection and allows the operation if the users and groups
55
58
associated with the current user have at least one entity that belongs to owner entities for the notebook.
Copy file name to clipboardExpand all lines: docs/security/shiroauthentication.md
+14-12Lines changed: 14 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,43 +20,47 @@ limitations under the License.
20
20
{% include JB/setup %}
21
21
22
22
# Shiro authentication for Apache Zeppelin
23
+
24
+
<divid="toc"></div>
25
+
26
+
## Overview
23
27
[Apache Shiro](http://shiro.apache.org/) is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. In this documentation, we will explain step by step how Shiro works for Zeppelin notebook authentication.
24
28
25
29
When you connect to Apache Zeppelin, you will be asked to enter your credentials. Once you logged in, then you have access to all notes including other user's notes.
26
30
27
31
## Security Setup
28
32
You can setup **Zeppelin notebook authentication** in some simple steps.
29
33
30
-
####1. Secure the HTTP channel
31
-
To secure the HTTP channel, you have to change both **anon** and **authcBasic** settings in `conf/shiro.ini`. In here, **anon** means "the access is anonymous" and **authcBasic** means "basic auth security".
34
+
###1. Secure the HTTP channel
35
+
To secure the HTTP channel, you have to change both **anon** and **authc** settings in `conf/shiro.ini`. In here, **anon** means "the access is anonymous" and **authc** means "formed auth security".
32
36
33
37
The default status of them is
34
38
35
39
```
36
40
/** = anon
37
-
#/** = authcBasic
41
+
#/** = authc
38
42
```
39
-
Deactivate the line "/** = anon" and activate the line "/** = authcBasic" in `conf/shiro.ini` file.
43
+
Deactivate the line "/** = anon" and activate the line "/** = authc" in `conf/shiro.ini` file.
40
44
41
45
```
42
46
#/** = anon
43
-
/** = authcBasic
47
+
/** = authc
44
48
```
45
49
46
50
For the further information about `shiro.ini` file format, please refer to [Shiro Configuration](http://shiro.apache.org/configuration.html#Configuration-INISections).
47
51
48
-
####2. Secure the Websocket channel
52
+
###2. Secure the Websocket channel
49
53
Set to property **zeppelin.anonymous.allowed** to **false** in `conf/zeppelin-site.xml`. If you don't have this file yet, just copy `conf/zeppelin-site.xml.template` to `conf/zeppelin-site.xml`.
50
54
51
-
####3. Start Zeppelin
55
+
###3. Start Zeppelin
52
56
53
57
```
54
58
bin/zeppelin-daemon.sh start (or restart)
55
59
```
56
60
57
61
Then you can browse Zeppelin at [http://localhost:8080](http://localhost:8080).
58
62
59
-
####4. Login
63
+
###4. Login
60
64
Finally, you can login using one of the below **username/password** combinations.
0 commit comments