-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
Conversation
Change-Id: I78b231523bc39e4527c7aaf7f637c46cb5ca3060
HadoopAuth-inspired SPNEGO implementation to allow login via Kerberos ticket
@prabhjyotsingh , @zjffdu , @felixcheung , |
### 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why r2.8.0?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
zeppelin-server/src/main/java/org/apache/zeppelin/rest/LoginRestApi.java
Outdated
Show resolved
Hide resolved
zeppelin-server/src/main/java/org/apache/zeppelin/rest/LoginRestApi.java
Outdated
Show resolved
Hide resolved
zeppelin-server/src/main/java/org/apache/zeppelin/rest/LoginRestApi.java
Outdated
Show resolved
Hide resolved
All CI builds seem to have passed as per https://travis-ci.org/VipinRathor/zeppelin/builds/464561551 |
There was a problem hiding this 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
Will merge this to master if no more discussion. |
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
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
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
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?
conf/shiro.ini
under[main]
section.Questions: