月度归档:2011年03月

Moodle用户认证切换到CAS+LDAP笔记

cms以前用的是email认证,用户自己填个人信息。过程繁琐,信息不准,相当折腾。偶然获知信息处正在做统一认证平台(CAS),就联系了一下,他们也正希望能有其它IT系统融入,所以一拍即合,相当融洽。

Moodle本身就有CAS认证插件,认证后从LDAP获取用户信息。配置起来并不复杂。两个比较好的参考:http://docs.moodle.org/en/admin/auth/ldaphttps://mediawiki.middlebury.edu/wiki/LIS/CASifying_Moodle

比较复杂的是和旧账号的兼容。如果能有明确的旧账号和CAS账号的对应关系,那么只要修改Moodle的user表,把username改成cas的用户名,auth改成cas就行。一个脚本,甚至几条sql语句就能搞定。

可惜我们没有这样的对应关系,必须让用户自己设定账号绑定,所以有了这个项目:https://github.com/hit-moodle/bind_cas_users。它先引导用户在CAS登录,然后让用户输入旧用户名和密码,验证通过,用户确认后,修改user表,使username为CAS用户名,auth为cas,这样用户以后直接从CAS登录就能完全继承旧账号的一切了。

这里有个难点,就是假如旧用户名是user1,CAS用户名是user2,而Moodle还有一个用户名是user2的用户。如果user1在user2之前做绑定,那么无法修改username。

解决方法是把所有旧用户名统一加上后缀“.local”(先要确认没有用户已经用过这个后缀),本地验证时自动在用户输入的用户名后加上“.local”。这样改username就不会发生冲突。下面这条SQL语句就是做这个的

提前若干天发出账号切换通知,让大家先去CAS激活账号,同时在小范围测试账号绑定程序。

在直接用cas登录时,假如moodle中并没有该用户的记录,会直接创建一个新用户。这导致,如果一个cas登录了的用户,没有去做账号绑定,直接点击了cms的任意要求登录的页面,那么他就在cms中有了一个和cas对应的新账号,而旧账号无法和新账号绑定了。这个问题的解决靠下面这个补丁:

挑一个夜黑风高的晚上,关站完成以上过程。大家一觉醒来,就都必须都用CAS登录了。

Moodle的cas登录插件还兼容其它登录方式。在其配置中设置好后,在登录界面会显示两个选择:CAS登录、其它登录。因为cms还有很多校外用户,以及cas中还没有考虑校园访客的情况,所以我们保留了原有的email认证(用户名加了后缀)。CAS登录会先判断用户是否已经在cas中登录了。如果是,就直接以其身份登录;如果否,才显示选择登录方式的界面。

另外,auth/cas/cas_ldap_sync_users.php是需要放在cron中的脚本,但没有转换完所有账号前千万不要运行。它会直接在moodle创建ldap中的所有用户,而不会进行任何账号关联操作。一旦运行,再想让用户能继承旧数据就比较麻烦了。

把自己的错误设成密码

密码要常换才安全;犯过的错误要牢记才能进步。前者总是懒得换;后者总容易忘记。所以,结合起来,把自己的错误设成密码!

第一次这么做是沉迷于bbs灌水时,就是戒不掉。于是把密码设成提醒自己别灌水、好好学习的句子,然后每次登bbs输密码时都特愧疚,很快就戒掉了灌水的毛病(改潜水了,-_-!!)。

还有一次领导问我认识几年了,我居然一下子忘记日子了。大罪过,马上把这个日子设成密码(当然得做足够的变形,比如用字母o代替数字0等等),然后再也忘不掉了。

还有一次和领导大吵架。吵完的结果是让我意识到自己性格中的一个缺陷。于是这个缺陷成了我的新密码,天天提醒我……

今天下出租车没摸兜,结果手机丢了。这事儿就是俺的最新密码了!

Moodle招勤工助学人员两名

主要工作:
  1. 参与学校Moodle网站的维护和开发工作
  2. Moodle文档和界面的汉化工作(可选)
要求:
  1. 必须是计算机学院在读本科生
  2. 最常用的信箱是gmail
  3. 有热情和责任心
  4. 已经具有一定的LAMP开发经验
  5. 每周工作至少10小时(超出时间不付薪)
  6. 生活有困难的同学优先
待遇:
  1. 每月补助300元人民币
  2. 锻炼LAMP技术
  3. 锻炼对git的使用
  4. 所做工作有机会被全校师生,甚至更远的人使用

有意者联系sunner@gmail.com,随信一定要有能打动人的文字。

使用Moodle的四层境界

一件工具是否是革命性的,要看它能否让我们已经习惯了的事物发生变化。“革命性”是否能发挥出来,要看使用者是否乐于去拥抱变化。比如iPhone,革命性已经毋容置疑,但不少拥有者只是喜欢炫耀它的外观,从来不用打电话、发短信以外的功能,那么这种“革命性”在他身上绝对不会体现。这样的人往往还会故作谦虚,其实是装牛X地说:“真没觉得这苹果手机有啥特别的”。Moodle也在遭遇这样的境遇。

本文的目的是想帮助初识或者不识Moodle的人一步步了解它到底能给我们带来什么。文中观点相信对blackboard、sakai、claronline等其它课程管理系统(CMS)或学习管理系统(LMS)一样适用。

第一层:资源发布

这一层是使用Moodle的第一步,也是很多人接受Moodle的最初原因。发布的资源主要两类:课件等资料,关于课程的信息和通知。

经常能见到教师通过博客和ftp等发布课件;没有博客或ftp的教师,会注册一个公共邮箱,把密码告诉学生,让大家到信箱下载;QQ群也是很多教师向学生发布信息和文件的基地。从这一点看,对信息化教学的需求其实是很巨大的。

上面这些手段没有一个是专门为课程设计的,所以总会遇到各种不便,比如不易查找、容量限制、密码被改、信件被删、不易重复利用等等。尽管诸多不便,很多教师仍能自觉坚持使用,很令人感动。

Moodle是专为课程设计,所以它更方便。除了完全克服上述缺点,还能轻易控制可见范围,更新、维护方便等等。基本上做一次,就可以用百次。

第二层:收取作业

网络相对传统媒体的一大优势就是信息能双向流动。开始在网上收作业,这个优势就开始被利用了。

收作业的需求也不少。最早,就是这个需求驱使我去寻找合适的系统,进而开始建设乐学网。在此之前,曾经用email收作业一次,其它很多教师也用过email。当课程的学生数不多时,用email收作业也还算不错。但学生数较多时,email附件的下载、整理,回信确认,信件丢失,迟发作业,以及没发还是丢失的扯皮,是能让教师疯掉的。

Moodle有专门的作业模块,将这一切轻松化解。作业在线布置,学生在线提交,超过截止时间自动关闭提交功能,教师在线浏览作业、评分、写评语,学生即时收到反馈,成绩自动归档统计,作业文件可以可以永久保存……

第三层:交互

老师讲,学生听,那不叫交互,甚至连“交流”都算不上。课堂是个很好的、不可被完全替代的交互场所,但它的时间与空间都是严重受限的。网络可以完全打破时间与空间的界限,实现无时无刻、无所不在的交互。

如果教师和学生,以及学生和学生之间能在QQ群讨论关于课程的问题,那么QQ群也是一个便捷交互式教学的场所。但它毕竟是为聊天设计,形式过分活泼,交流又只限于在线的人群,回顾旧话题非常不便。

Moodle中也有类似QQ群的聊天室,可以开展实时在线答疑。也有点对点的消息系统,可以单对单地沟通。但对教学最有突破意义的,是“讨论区”。

讨论区就是我们常用的论坛、bbs。每门课程都可以根据需要建立多个讨论区,对应不同的话题。缺省只能课程成员参与讨论,也可以限制只有课程成员才能看到帖子。不管你在线、不在线,看帖、不看帖,帖子都在那里,回复也都在那里,随时可以看到。精华的讨论可以永久保留,让一代代的学生受益。还能给好帖子打分,成绩可以记入课程成绩。我写过一篇专门的文章《moodle里如何活跃讨论区》,值得感兴趣的人参考。

第四层:协作

这是我能理解到的,使用Moodle的最高境界。但很可惜,这一层我暂时还没有做到,贡献不出第一手的感受。

据我了解,Moodle最有代表性的两个协作功能是Wiki和互动评价(Workshop)。

Wiki是一个类似维基百科的功能。在其中,学生可以彼此合作(当然,教师也可以参与),共同在线撰写文档,实现高效的协作。曾见过国外使用它的案例,用Wiki教小学生写作,效果特别好。

互动评价强调的不是共同完成一件事,而是通过互相评分达到共同提高的目的,同时还能节约教师时间。它的后台算法会尽量避免故意给高分或低分的情况,尽量只保留客观的评分。围绕它,甚至还有很多高水平的教学论文发表,比如这个,还有这个

总结

网络是个革命性的工具,基于网络的课程管理系统对教学是个革命性的工具。所有革命被广泛接受都需要一定的时间。让我们慢慢来,一层层地做,在Moodle中,潜移默化地改变我们的教学手段和方法,进而改变我们的教学思维。改变的过程中也许会有些许的阵痛,但最后的结果一定是皆大欢喜的!