groups存储的是一条条的权限,比如password,password.write,如果没有group_member表的话,password,password.write是没有什么关系的;group_member存储的是权限和用户的关系,以及权限之间的上下级关系;

现将user所有的直属权限查询出来,再遍历查询出来的group,再次查询group_member中有没有这些group的上级;一直遍历到没有上级了为止;

使用的sql如下:
select g.id,g.displayName from groups g, group_membership m where g.id = m.group_id and g.identity_zone_id=? and m.member_id in (?);

external_group_memeber module 主要是针对saml协议;