Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Zeppelin 3792] Zeppelin SPNEGO support #3250

Closed
wants to merge 5 commits into from

Conversation

VipinRathor
Copy link
Contributor

What is this PR for?

HTTP SPNEGO (Simple and Protected GSS-API NEGOtiation) is the standard way to support Kerberos Ticket based user authentication for Web Services. With this PR, Zeppelin supports ability to authenticate users by accepting and validating their Kerberos Ticket based on Apache Hadoop Auth framework.

What type of PR is it?

[Feature | Documentation]

What is the Jira issue?

How should this be tested?

  • Manual Testing
  • To enable this, apply the following change in conf/shiro.ini under [main] section.
krbRealm = org.apache.zeppelin.realm.kerberos.KerberosRealm
krbRealm.principal=HTTP/zeppelin.fqdn.domain.com@EXAMPLE.COM
krbRealm.keytab=/etc/security/keytabs/spnego.service.keytab
krbRealm.nameRules=DEFAULT
krbRealm.signatureSecretFile=/etc/security/http_secret
krbRealm.tokenValidity=36000
krbRealm.cookieDomain=domain.com
krbRealm.cookiePath=/
authc = org.apache.zeppelin.realm.kerberos.KerberosAuthenticationFilter

Questions:

  • Does the licenses files need update? No
  • Is there breaking changes for older versions? No
  • Does this needs documentation? Yes

Change-Id: I78b231523bc39e4527c7aaf7f637c46cb5ca3060
HadoopAuth-inspired SPNEGO implementation to allow login via Kerberos ticket
@VipinRathor
Copy link
Contributor Author

@prabhjyotsingh , @zjffdu , @felixcheung ,
Can you please help with the review? Thanks in advance.

### HTTP SPNEGO Authentication
HTTP SPNEGO (Simple and Protected GSS-API NEGOtiation) is the standard way to support Kerberos Ticket based user authentication for Web Services. Based on [Apache Hadoop Auth](https://hadoop.apache.org/docs/current/hadoop-auth/index.html), Zeppelin supports ability to authenticate users by accepting and validating their Kerberos Ticket.

When HTTP SPNEGO Authentication is enabled for Zeppelin, the [Apache Hadoop Groups Mapping](https://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/GroupsMapping.html) configuration will used internally to determine group membership of user who is tyring to log in. Role-based access permission can be set based on groups as seen by Hadoop.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why r2.8.0?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because r2.8.0 has better documentation and r2.7.3 doesn't have any GroupsMapping even though the Group mapping has been available since long. If it helps, I can use this doc link from r2.7.3 (but this is not as good as r2.8.0 one).
https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html#Group_Mapping

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@felixcheung Do let me know if we should be sticking to 2.7.3 doc link. Thanks.

@VipinRathor
Copy link
Contributor Author

All CI builds seem to have passed as per https://travis-ci.org/VipinRathor/zeppelin/builds/464561551
I don't know why this PR is showing 1 failed check. Can someone please help me out?

Copy link
Contributor

@prabhjyotsingh prabhjyotsingh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI looks green.
LGTM

@prabhjyotsingh
Copy link
Contributor

Will merge this to master if no more discussion.

@asfgit asfgit closed this in d5513fd Dec 11, 2018
avnerl pushed a commit to avnerl/zeppelin that referenced this pull request Dec 16, 2018
HTTP SPNEGO (Simple and Protected GSS-API NEGOtiation) is the standard way to support Kerberos Ticket based user authentication for Web Services. With this PR, Zeppelin supports ability to authenticate users by accepting and validating their Kerberos Ticket based on Apache Hadoop Auth framework.

[Feature | Documentation]

* [Zeppelin 3792](https://issues.apache.org/jira/browse/ZEPPELIN-3792)

* Manual Testing
* To enable this, apply the following change in `conf/shiro.ini` under `[main]` section.
```
krbRealm = org.apache.zeppelin.realm.kerberos.KerberosRealm
krbRealm.principal=HTTP/zeppelin.fqdn.domain.comEXAMPLE.COM
krbRealm.keytab=/etc/security/keytabs/spnego.service.keytab
krbRealm.nameRules=DEFAULT
krbRealm.signatureSecretFile=/etc/security/http_secret
krbRealm.tokenValidity=36000
krbRealm.cookieDomain=domain.com
krbRealm.cookiePath=/
authc = org.apache.zeppelin.realm.kerberos.KerberosAuthenticationFilter
```

* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? Yes

Author: Vipin Rathor <v.rathor@gmail.com>

Closes apache#3250 from VipinRathor/ZEPPELIN-3792 and squashes the following commits:

b35606d [Vipin Rathor] Incorporating review comments
0f2e74a [Vipin Rathor] ZEPPELIN-3792 - Documentation changes for SPNEGO support
f3387f0 [Vipin Rathor] Adding Apache License header in the new file
ae56098 [Vipin Rathor] ZEPPELIN-3792 - Zeppelin SPNEGO support
a8f25da [Vipin Rathor] Zeppelin SPNEGO support

Change-Id: I8026c0a13de0eb11767f8a7bbced0bedd77d643c
prabhjyotsingh pushed a commit to prabhjyotsingh/zeppelin that referenced this pull request Sep 5, 2019
HTTP SPNEGO (Simple and Protected GSS-API NEGOtiation) is the standard way to support Kerberos Ticket based user authentication for Web Services. With this PR, Zeppelin supports ability to authenticate users by accepting and validating their Kerberos Ticket based on Apache Hadoop Auth framework.

[Feature | Documentation]

* [Zeppelin 3792](https://issues.apache.org/jira/browse/ZEPPELIN-3792)

* Manual Testing
* To enable this, apply the following change in `conf/shiro.ini` under `[main]` section.
```
krbRealm = org.apache.zeppelin.realm.kerberos.KerberosRealm
krbRealm.principal=HTTP/zeppelin.fqdn.domain.comEXAMPLE.COM
krbRealm.keytab=/etc/security/keytabs/spnego.service.keytab
krbRealm.nameRules=DEFAULT
krbRealm.signatureSecretFile=/etc/security/http_secret
krbRealm.tokenValidity=36000
krbRealm.cookieDomain=domain.com
krbRealm.cookiePath=/
authc = org.apache.zeppelin.realm.kerberos.KerberosAuthenticationFilter
```

* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? Yes

Author: Vipin Rathor <v.rathor@gmail.com>

Closes apache#3250 from VipinRathor/ZEPPELIN-3792 and squashes the following commits:

b35606d [Vipin Rathor] Incorporating review comments
0f2e74a [Vipin Rathor] ZEPPELIN-3792 - Documentation changes for SPNEGO support
f3387f0 [Vipin Rathor] Adding Apache License header in the new file
ae56098 [Vipin Rathor] ZEPPELIN-3792 - Zeppelin SPNEGO support
a8f25da [Vipin Rathor] Zeppelin SPNEGO support

Change-Id: I8026c0a13de0eb11767f8a7bbced0bedd77d643c

# Conflicts:
#	HDP-CHANGES.txt
prabhjyotsingh pushed a commit to prabhjyotsingh/zeppelin that referenced this pull request Mar 2, 2022
HTTP SPNEGO (Simple and Protected GSS-API NEGOtiation) is the standard way to support Kerberos Ticket based user authentication for Web Services. With this PR, Zeppelin supports ability to authenticate users by accepting and validating their Kerberos Ticket based on Apache Hadoop Auth framework.

[Feature | Documentation]

* [Zeppelin 3792](https://issues.apache.org/jira/browse/ZEPPELIN-3792)

* Manual Testing
* To enable this, apply the following change in `conf/shiro.ini` under `[main]` section.
```
krbRealm = org.apache.zeppelin.realm.kerberos.KerberosRealm
krbRealm.principal=HTTP/zeppelin.fqdn.domain.comEXAMPLE.COM
krbRealm.keytab=/etc/security/keytabs/spnego.service.keytab
krbRealm.nameRules=DEFAULT
krbRealm.signatureSecretFile=/etc/security/http_secret
krbRealm.tokenValidity=36000
krbRealm.cookieDomain=domain.com
krbRealm.cookiePath=/
authc = org.apache.zeppelin.realm.kerberos.KerberosAuthenticationFilter
```

* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? Yes

Author: Vipin Rathor <v.rathor@gmail.com>

Closes apache#3250 from VipinRathor/ZEPPELIN-3792 and squashes the following commits:

b35606d [Vipin Rathor] Incorporating review comments
0f2e74a [Vipin Rathor] ZEPPELIN-3792 - Documentation changes for SPNEGO support
f3387f0 [Vipin Rathor] Adding Apache License header in the new file
ae56098 [Vipin Rathor] ZEPPELIN-3792 - Zeppelin SPNEGO support
a8f25da [Vipin Rathor] Zeppelin SPNEGO support

Change-Id: I8026c0a13de0eb11767f8a7bbced0bedd77d643c

# Conflicts:
#	HDP-CHANGES.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants