惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cloudbric
Cloudbric
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
S
Secure Thoughts
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
Attack and Defense Labs
Attack and Defense Labs
T
The Blog of Author Tim Ferriss
Vercel News
Vercel News
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
T
Tailwind CSS Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Scott Helme
Scott Helme
博客园 - Franky
I
InfoQ
Cisco Talos Blog
Cisco Talos Blog
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
Help Net Security
Help Net Security
M
MIT News - Artificial intelligence
GbyAI
GbyAI
B
Blog
K
Kaspersky official blog
博客园 - 【当耐特】
AWS News Blog
AWS News Blog
O
OpenAI News
A
About on SuperTechFans
F
Fortinet All Blogs
PCI Perspectives
PCI Perspectives
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
Application and Cybersecurity Blog
Application and Cybersecurity Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
CXSECURITY Database RSS Feed - CXSecurity.com
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
为什么CAS应该成为你的LMS的一部分
2015-12-29 · via 夜行人

#缘起 这个标题是在呼应@MT为什么LTI应该成为你的LMS的一部分?

@MT在上面这篇博文中写道:

一个独立的开发商不可能提供所有的学校和组织需要的学习工具。因此,从不同开发商整合多种工具的能力对于学习系统来说变得必须。

@MT对学习系统的见解,我一直十分佩服,每次交流,都受益匪浅。很喜欢上边的这句话,一个系统在架构设计的时候,如果考虑到日后与其他系统协作的可能,那么这种考虑会让它变得灵活许多.保持一种开放的心态,而不是试图自己实现所有的功能,臆想所有的场景,揣度用户心理与习惯。

开放性与对协作的友好,也许正是应对变化的最佳策略,这也是我喜欢Unix/Linux的原因,当然也是我很喜欢Open edX的原因。

让系统保持开放性,增强与外部系统交互的能力,十分有利于一个系统的长期运行,而不是因为外部的变化而迅速被淘汰。

#回顾 我们在上篇文章(教育信息化、信息孤岛与身份认证)里提到,CAS对于整合异构系统是有意义的,它解决了统一身份认证的问题,让用户在异构系统中穿梭感觉不到,一致性体验很好

如果LMS支持CAS(CAS Client),那么它将可能轻易与其他系统整合,外部看去浑然一体,或者至少为将来的系统之间的整合铺平道路

#CAS概述 CAS来自耶鲁大学,当前的最新版本未3.0,目前由Jasig组织维护,在美国高校中被广泛采用,因此Open edX默认支持的三种外部认证中就包括它(另外两种是SSL Client Certificates和Shibboleth,参考Setting Up External Authentication)

我们先摘录维基百科的一段介绍:

集中式认证服务(英语:Central Authentication Service,缩写CAS)是一种针对万维网的单点登录协议。它的目的是允许一个用户访问多个应用程序,而只需提供一次凭证(如用户名和密码)。它还允许web应用程序在没有获得用户的安全凭据(如密码)的情况下对用户进行身份验证。“CAS”也指实现了该协议的软件包。

我们可能需要先解释下什么叫单点登录

###单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

单点登录一般的实现方案是通过使用ticket,认证系统能识别出用户是否登录,从而只需要登录一次就能访问所有受认证系统信任的应用。因此CAS只是实现SSO的一中协议。我们也可以用SAML,以及当前很流行的JWT来实现SSO

#CAS原理 CAS由三部分组成,分别为:

  • Web Browser
  • CAS Client
  • CAS Server

协议过程如下如所示

cas_diagram

请求认证时序图为

cas_diagram2

上图中TGC表示Ticket Granted Cookie,ST表示Service Ticket

在我最近的使用场景中,CAS Client是Open edX,其他的CAS Client还包括高校的其他系统。而CAS Server由校方提供,主要对接了教务数据库。

这里陈述一下我之前的一个误解,不知道大家是否也存在,我以为CAS是无法跨域的,A,B两个应用得在同个主域下才可以(通过使用子域名),因为cookie不能跨域,其实是CAS是可以跨域的。

由于CAS Server的存在,起了中介者的作用,使跨域成为可能。用户访问过应用A之后,已经和CAS Server建立了会话(CAS Server上有session,而浏览器记录了和这个域名相关的cookie),这时候用户访问应用B,假设没登陆应用B,则用户被重定向到CAS Server,由于访问A时建立了会话,所以将拿到tickit,之后的过程就和上边一样了。

同时补充一点关于CAS Server的说明,CAS Server专注于认证,至于认证的依据是什么,CAS支持许多方案,包括数据库,LDAP等

此外我们还应该知道,使用CAS不影响web应用内部的会话机制,应用A,B都有各自的session,这样一来CAS很像一个外插设备,不会干扰既有系统,我们需要做的只是在既有web应用内实现CAS Client,目前已经有许多开源实现,几乎可能整合到任何语言里

而CAS Server也有成熟的开源实现,可以直接使用,诸如著名的Jasig/cas

#Jasig/cas Jasig/cas是github上关注度最高的CAS Server开源实现,主页在这里

Jasig/cas功能十分完备

  • 可插拔地支持LDAP, database等
  • 支持多种协议,诸如CAS, SAML, OAuth, OpenID
  • 之多跨平台的CAS Client,支持Java, .Net, PHP, Perl, Apache等
  • 集成了uPortal, Liferay, BlueSocket, Moodle, Google Apps等

更多细节参考主页

#附录:CAS实现 以下我们只关心开源实现

###CAS Server

###CAS Client

#参考