`
liuyf
  • 浏览: 33504 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

从sakai的用户注册功能窥其权限设计

阅读更多
你会觉得sakai的新用户注册功能是很简单的。的确,如果你在官方demo的基础上只需要配置一个tool就好了,但如果没有一些原始数据呢,即如果将demo中默认的realm删除掉,你还能轻松配置这个功能吗?这背后就涉及到sakai的realm策略及其实现。
我理想的权限设计包括这些部分:资源、情景、角色、用户、操作。某个用户在特定情景下,扮演某个角色,去操作某个资源。用编程实现就是:用url表示情景,根据数据库中的记录,可以计算出用户此时的角色,角色则是一个集合,包含了某个资源是否可以被操作的直接信息。
Sakai的权限思路是:资源+操作+用户。
上pp,下面是添加用户时的堆栈情况。

其中unlock是权限检查,决定addUser是否能执行。Unlock在SakaiSecurity.java中。

如上所示,如果是超级用户登录,这个操作被允许;再看有没有暴露给外部的仲裁接口即Advisor;最后再检查授权组的权限,即checkAuthzGroups()函数,在这里,其第四个参数azgs其实就是realm列表,这里是null。

看看第309行,getAuthzGroups,是怎么获得realm的。
跟下去,会跟到BaseUserDirectoryService.java中getEntityAuthzGroups

在1697行和1699行,添加了两个realm,一个是以资源本身的id为realm;另一个根据userId的userType绑定资源的realm,如下代码。

所以,realm就找好了。下面是
isAllowed(String userId, String lock, Collection<String> realms) 在DbAuthzGroupService.java中。然后就在数据库中寻找相应realm对应的权限,下面是sql语句:
select count(1) from sakai_realm_rl_fn,sakai_realm force index (ak_sakai_realm_id) where sakai_realm_rl_fn.realm_key = sakai_realm.realm_key and  sakai_realm.realm_id in (x'2f757365722f31646466626235392d633734342d346462652d383533332d383334343634636661363433',x'21757365722e74656d706c617465') and function_key in (select function_key from sakai_realm_function where function_name = x'757365722e616464')  and (role_key in (select role_key from sakai_realm_rl_gr where active = '1' and user_id = null  and realm_key in (select realm_key from sakai_realm where  sakai_realm.realm_id in (x'2f757365722f31646466626235392d633734342d346462652d383533332d383334343634636661363433',x'21757365722e74656d706c617465')))  or role_key in (select role_key from sakai_realm_role where role_name = '.anon') )
总结:
1、要使用注册用户功能,必须构造名称为!user.template的realm,并赋予.anon角色user.add的权限。
2、对资源的控制,都在!user.template中(用户信息也是一种资源)。
  • 大小: 15 KB
  • 大小: 19.1 KB
  • 大小: 11.9 KB
  • 大小: 11.8 KB
  • 大小: 16.9 KB
0
0
分享到:
评论

相关推荐

    sakai 用户注册业务流程分析

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流。欢迎交流!

    E-learning sakai 用户手册

    Sakai 是由高校、商业组织和个人开发者组成的社区,致力于开发一个通用的协作学习环境...Sakai OAE (Open Academic Environment)是一个目前正在开发中的新版本,继承了CLE中的内容和经验,致力于全新的用户体验。

    sakai permission权限设计分析文档

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流,欢迎交流!

    sakai 工具权限设置逻辑

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流。欢迎交流!

    sakai样式修改手册

    Sakai 是由高校、商业组织和个人开发者组成的社区,致力于开发一个通用的协作学习环境...Sakai OAE (Open Academic Environment)是一个目前正在开发中的新版本,继承了CLE中的内容和经验,致力于全新的用户体验。

    教学与教务管理系统2 0教学sakai系统用户使用手册(转自北邮)

    教学与教务管理系统2 0教学sakai系统用户使用手册(转自北邮)。

    Sakai-src基于Sakai的源码文件

    Sakai的src,Sakai的三种方式中的src,便于更改开发

    sakai安装文档,很有用的

    sakai安装文档,很有用的安装Sakai App Builder

    sakai2.8安装手册

    详细描述了sakai2.8的安装过程以及错误解析,和hello world示例的演示。。

    sakai 的权限流程分析-详细的源码调用过程

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流,欢迎交流!

    Sakai的开发文档

    sakai的开发文档 根据自己做这件事遇到的问题所作的文档,也可以算作是学习笔记。

    sakai charon分析文档

    sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流,欢迎交流!

    sakai doc 2.9.3

    sakai-javadoc-2.9.3.tgz

    使用Sakai构建开放式教学平台(完整版)

    使用Sakai构建开放式教学平台(完整版)

    sakai的安装配置

    该文档主要是说一下sakai的配置问题,因为我也遇到了相同的问题,所以我将我遇到的问题都记录下来共享一下

    Sakai部署步骤 (1)1

    1.修改:/iscas/sakai/tomcat7/conf/server.xml 2.修改:/iscas/sakai/tomcat7/bin/setevn.s

    sakai使用手册

    sakai 是国外一款开源的网络教育平台,由麻省理工大学。

    sakai汉化工具jrceditor

    NULL 博文链接:https://liuyf.iteye.com/blog/723460

    Sakai11远程教育版安装指南

    系统运行软件环境 服务器端: 操作系统:linux 或 windows 数据库:mysql 5.5或更高版本 编译运行环境:Java 1.8 客户端: Windows7、Windows8,IE7以上版本、chrome、firefox浏览器 安装步骤(以linux为例)

    SAKAI 架构 的前世今生

    NULL 博文链接:https://bochuxt.iteye.com/blog/728567

Global site tag (gtag.js) - Google Analytics