[ https://issues.apache.org/jira/browse/KYLIN-2960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16223514#comment-16223514 ]
jiatao.tao commented on KYLIN-2960: ----------------------------------- {code:java} package org.apache.kylin.rest.security; import java.util.Set; import org.apache.kylin.rest.constant.Constant; import org.springframework.ldap.core.ContextSource; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator; import com.google.common.collect.Sets; public class AuthoritiesPopulator extends DefaultLdapAuthoritiesPopulator { private SimpleGrantedAuthority adminRoleAsAuthority; //defaultRole may be helpful, it needs discuss public AuthoritiesPopulator(ContextSource contextSource, String groupSearchBase, String adminRole, String defaultRole) { super(contextSource, groupSearchBase); setGroupSearchFilter("(|(member={0})(memberUid={1}))"); setConvertToUpperCase(false); setRolePrefix(""); this.adminRoleAsAuthority = new SimpleGrantedAuthority(adminRole); } @Override public Set<GrantedAuthority> getGroupMembershipRoles(String userDn, String username) { Set<GrantedAuthority> authorities = super.getGroupMembershipRoles(userDn, username); Set<GrantedAuthority> userAuthorities = Sets.newHashSet(authorities); if (authorities.contains(adminRoleAsAuthority)) { userAuthorities.add(new SimpleGrantedAuthority(Constant.ROLE_ADMIN)); } return userAuthorities; } } {code} > We should submit a new feature that it support the authentication for user > and role and the authentication for user and group when the LDAP > authentication was enabled. > ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: KYLIN-2960 > URL: https://issues.apache.org/jira/browse/KYLIN-2960 > Project: Kylin > Issue Type: New Feature > Components: General > Reporter: peng.jianhua > Assignee: peng.jianhua > Labels: patch > Attachments: > 0001-KYLIN-2960-We-should-submit-a-new-feature-that-it-su.patch > > > Currently, the user authentication interface that was provided by kylin to > the third party only supports user and role authentication. However only user > and group have authentication function when we use the LDAP authentication. > In fact the authentication for user and role and the authentication for user > and group have the same functional characteristics between different > appplication system. So we should submit a new feature that it support the > authentication for user and role and the authentication for user and group > when the LDAP authentication was enabled. > We supplied the checkPermission interface to implement the new feature. In > the interface we set user groups information to the userRoles parameter when > the LDAP was enabled, on the contrary we set user roles information to the > userRoles parameter. The interface is as following: > /** > * Checks if a user has permission on an entity. > * > * @param user > * @param userRoles > * @param entityType String constants defined in AclEntityType > * @param entityUuid > * @param permission > * > * @return true if has permission > */ > abstract public boolean checkPermission(String user, List<String> userRoles, > // > String entityType, String entityUuid, Permission permission); -- This message was sent by Atlassian JIRA (v6.4.14#64029)