GitHub user herval opened a pull request:
https://github.com/apache/zeppelin/pull/2498
[ZEPPELIN-2796] Fetching LDAP roles
### What is this PR for?
This actually fetches the user's LDAP roles, when using the LdapRealm, so
they're accessible on Zeppelin (via the `SecurityUtils`).
As I debugged through it, I found some weird replacement code, so I wrote
some tests around the `LdapRealm` and fixed what I believe was wrong there.
Eg.: `expandTemplate` would expand, for instance, `uid={0}` into
`uid={0}yourusername`.
In order to make the actual LDAP calls for roles, I exposed the
`queryForAuthorizationInfo` method and used it on `SecurityUtils`.
### What type of PR is it?
Bug Fix / Improvement
### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-2796
### How should this be tested?
I tested this in our LDAP environment. My shiro.ini looked more or less
like this:
```
[main]
ldapRealm = org.apache.zeppelin.realm.LdapRealm
ldapRealm.contextFactory.url = ldap://ldap.foo
ldapRealm.contextFactory.authenticationMechanism = simple
ldapRealm.userDnTemplate = uid={0},cn=users,dc=ods,dc=foo
ldapRealm.searchBase = dc=ods,dc=foo,dc=corp
ldapRealm.userSearchBase = cn=users,dc=ods,dc=foo
ldapRealm.groupSearchBase = cn=groups,dc=ods,dc=foo
ldapRealm.authorizationEnabled = true
ldapRealm.groupObjectClass = posixGroup
ldapRealm.memberAttribute = memberUid
ldapRealm.userObjectClass = posixAccount
ldapRealm.memberOfAttribute = memberOf
ldapReal.groupSearchFilter = '(memberUid={0})'
securityManager.realms = $ldapRealm
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login
[urls]
/api/version = anon
/api/metrics = anon
/api/interpreter/repository/** = authc
/api/configurations/** = authc
/api/credential/** = authc
/api/notebook-repositories = authc
# /** = anon
/** = authc
```
you can tell the role fetching worked inspecting the web call to `/ticker`,
which will now return the full roles list
### Screenshots (if appropriate)
### Questions:
* Does the licenses files need update?
* Is there breaking changes for older versions?
* Does this needs documentation?
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/herval/zeppelin ldap-roles
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/zeppelin/pull/2498.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2498
----
commit ed1b0f850236de9fedc34fbeacc074212d6e6840
Author: Herval Freire <[email protected]>
Date: 2017-07-19T18:23:43Z
expose roles from ldap + fix substitution code
commit 4d3ed58fb32cf66d984767e65ac71b69471e1920
Author: Herval Freire <[email protected]>
Date: 2017-07-20T17:05:38Z
expose roles from ldap + fix substitution code
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---