open edx 实现第三方登录-shibboleth单点登录

在open edx端的配置参考官方文档:http://edx.readthedocs.io/projects/edx-installing-configuring-and-running/en/latest/configuration/tpa/index.html
前提:shibboelth-idp默认己经配置好,idp与open ldap也能正常联接。
-----------------------------
下面是在Open edX上进行的配置
-----------------------------

1. 打开第三方认证特性

由于默认情况下open edx的第三方认证是不可用的,因此首先需要打开第三方认证特性。通过下面的操作实现:
(1)输入下面的命令:
sudo su
vi /edx/app/edxapp/lms.env.json
(2)在lms.env.json文件中,把

"ENABLE_COMBINED_LOGIN_REGISTRATION" 和 "ENABLE_THIRD_PARTY_AUTH"
这两个属性的值都改为true,保存修改。
"FEATURES" : {..."ENABLE_COMBINED_LOGIN_REGISTRATION": true,"ENABLE_THIRD_PARTY_AUTH": true
}

如下图所示

2. 配置Open edX作为SP

首先生成credential key pair(即生成公钥和私钥)以保证SP和IDP之间数据传输的安全性,然后利用credential key pair生成SP端的原数据。

2.1 生成公钥和私钥

(1)输入下面的命令:
openssl req -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.key

(2)   输入要求填写的信息(Country Name, state or Province Name,等),就会在当前路径下生成公钥saml.crt和私钥saml.key

生成的结果如下:(saml.crt   saml.key)

2.2 把生成的公钥和私钥添加到LMS配置文件中

(1)打开lms.auth.json文件
输入下面的命令:
vi /edx/app/edxapp/lms.auth.json

(2)把saml.crt文件的内容复制到SOCIAL_AUTH_SAML_SP_PUBLIC_CERT属性中。
       注意: saml.crt文件的内容去掉开头和结尾的注释,内容去掉换行。使之为一个单行的字符串添加入SOCIAL_AUTH_SAML_SP_PUBLIC_CERT属性中。
       saml.crt文件内容如下图:

lms.auth.json加入公钥私钥内容后如下:
(3)把saml.key文件的内容复制到SOCIAL_AUTH_SAML_SP_PRIVATE_KEY属性中。
saml.key内容如下。也是只复制中间的内容(内容去掉开头和结尾的注释,内容去掉换行。使之为一个单行的字符串)

2.3 配置open edx作为SP,生成原数据

(1)登录到Django 管理界面。
URL为http://{your_URL}/admin ,如这里的是:http://cherry.os.cs.tsinghua.edu.cn
界面如下图:输入有管理员权限的用户名密码
登录成功后,看到如下的界面:
(2)在Third_Party_Auth下面的SAML Configuration 中点击Add.
如下图:
(3)选中Enabled,输入下面的信息:
  • Entity ID: 这会作为生成的原数据中的entity_id。一般输入服务器名,如: http://saml.mydomain.com/. (我这里的是http://cherry.os.cs.tsinghua.edu.cn)

  • Site: 指定作为SP的站点

  • Organization Info: 组织信息,如下,把下面改为你的edx信息

    {"en-US": {"url": "http://www.mydomain.com","displayname": "{Complete Name}","name": "{Short Name}"}
    }
    

  • {"en-US": {"url": "http://cherry.os.cs.tsinghua.edu.cn","displayname": "Tsinghua University","name": "tsinghua"}
    }
  • Other config str: 定义IdP原数据文件的安全设置,保持默认即可。如下:

    {"SECURITY_CONFIG": {"signMetadata": false,"metadataCacheDuration": ""}
    }

点右下角的保存按钮
点保存后结果如下:
(4)在 {your LMS URL}/auth/saml/metadata.xml 中可以看到生成的SP端原数据
如我这里的是:http://cherry.os.cs.tsinghua.edu.cn/auth/saml/metadata.xml
原数据的内容在IdP配置的时候会用到。
如果上面的步骤中没有生成成功原数据,在2.2做完后先重启edx服务,然后再进行2.3
重启edx服务的命令如下:
sudo /edx/bin/supervisorctl restart edxapp:
sudo /edx/bin/supervisorctl restart edxapp_worker: 

2.4 确保SAML 认证后端己加载

如果你没有改过/edx/app/edxapp/lms.env.json文件的设置(向它添加过THIRD_PARTY_AUTH_BACKENDS设置),这一步可以什么都不过,跳过就行。

3. 使SP和IdP结合

3.1 交换原数据

---------------------------------
       此步骤在IdP机器进行(开始)
---------------------------------
3.1.1 先把2.3中生成的SP端原数据,保存到IdP端,并更改IdP配置文件
(1)我这里把http://cherry.os.cs.tsinghua.edu.cn/auth/saml/metadata.xml的内容保存为单独的文件,命名为edx-metadata.xml,然后把该文件上传到IdP机器的/opt/shibboleth-idp/metadata/目录下。
(2)更改IdP配置文件
在IdP机器输入下面的命令:
vi /opt/shibboleth-idp/conf/relying-party.xml 

在Metadata Configuration的部分加入面的内容:

<metadata:MetadataProvider xsi:type="FilesystemMetadataProvider"xmlns="urn:mace:shibboleth:2.0:metadata" id="SPMETADATA-EDX"metadataFile="/opt/shibboleth-idp/metadata/edx-metadata.xml" />
(你也可以不上传原数据文件到IdP机器,直接在把上面的 metadataFile="/opt/shibboleth-idp/metadata/edx-metadata.xml" 改为
metadataFile="http://cherry.os.cs.tsinghua.edu.cn/auth/saml.metadata.xml"
)
如下图:
3.1.2 然后把IdP原数据(位于IdP机器中的/opt/shibboleth-idp/metadata/目录下,一般为idp-metadata.xml文件),保存到一个可以用URL获得的地方。
我这里把IdP原数据保存到gitlab仓库中,链接为:https://raw.githubusercontent.com/jennyzhang8800/os_platform/master/idp-metadata.xml
-----------------------------------
(结束)
-----------------------------------

3.2 添加并使SAML IdP可用

(1)登录到Django 管理界面。
管理界面的URL,如http://cherry.os.cs.tsinghua.edu.cn/admin
(2)在Third_Party_Auth下的Provider Configuration(SAML IdPs) 点击Add
如下图:

(3)输入下面的信息:
  • Icon class: 这里输入fa-university.
  • Name: 在登录页面出现的IdP名。如:Tsinghua_OS
  • Secondary: 选中这一项则在登录时会有一个中间页列表出现。这里选中
  • Backend name: 默认为tpa-saml,不用改
  • Site: 站点名,输入edx的站点名。如:cherry.cs.tsinghua.edu.cn
  • IdP slug: 唯一识别这个IdP的名称。不含空格,可以作为CSS类名。如:shibboleth
  • Entity ID: 与IdP原数据(idp-metadata.xml)中的entity_id值保持一致(一定要一致!)。如:http://os.cs.tsinghua.edu.cn/idp/shibboleth
  • Metadata source: IdP原数据的URL。如:在3.1.2中我们己经有了:https://raw.githubusercontent.com/jennyzhang8800/os_platform/master/idp-metadata.xml

把Ship email verification 和Visible勾上。(可选)

其他项可以不用填
在右上角:Enabled选中
右下角:点Save保存。
保存后结果如下图所示:

4.检测是否配置成功

1. 在管理界面(http://cherry.os.cs.tsinghua.edu.cn/admin),进入到Third_Party_Auth下的Provider Configuration(SAML IdPs)界面。查看Metadata Ready是否是绿色的勾,如果是测说明能够正确获取IdP原数据。
如果不是绿色的勾,先重启edx服务,然后刷新页面。 如果还不行,请检查Metadata source是否正确,通过这个URL是不是能获取idp原数据。
2.检查是否能正确获取IdP端原数据的另一个方法,点击Third_Parth_Auth下的SAML Provider Data选项,会获取一次原数据,如果能成功获取,Is valid会打上绿色的勾。
如下图:
结果如下:(Is valid打上绿色勾,说明能正确获取IdP端的原数据)
3. 登录
(1)在open edx首页,点sign in 
(2)点击Use my Institution/Campus credentials
(3) 点击Tsinghua_OS(你设置的名称)
(4)跳到IdP页面,输入用户名密码进行登录。(用户名密码是在open ldap保己经创建好用户的)
(5)如果是第一次登录,账号没有在edx注册过,那么会跳到下面的页面。以后登录会直接跳到(6),不会再出现下面的页面
(6)登录成功,返回到edx页面。

open edx 实现第三方登录-shibboleth单点登录相关推荐

  1. 跨平台第三方平台登录和单点登录

    跨平台第三方平台登录和单点登录 官方介绍: 单点登录:简称为 SSO,是比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 个人 ...

  2. jwt单点登录_单点登录SSO技术选型

    一些人存在的意义总归是让另一些人成长,然后消失. --刘同<谁的青春不迷茫> 1.单点登录是什么? 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这 ...

  3. java判断用户是否在某一个区域登录_单点登录实现原理

    一.单点登录概念 什么是单点登录?单点登录全称 Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部 ...

  4. 什么是单点登录,单点登录的三种实现方式

    转载地址:https://www.jianshu.com/p/613e44d4a464 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在 ...

  5. 什么是单点登录?单点登录的三种实现方式

    单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得 ...

  6. 啥是单点登录及单点登录原理

    一.单系统登录机制 1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关 ...

  7. 4、联合登录和单点登录

    4.联合登录和单点登录 打开权限 @GetMapping("query") @PreAuthorize("hasAuthority("salary") ...

  8. Cookie + Session登录-Token登录-SSO 单点登录-OAuth 第三方登录

    文章目录 1.Cookie + Session 登录 2. Cookie + Session 存在的问题 3.Token 登录认证 1. Token 机制实现流程 2. Token 机制的特点 3. ...

  9. php跨域单点登录,SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析...

    SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1. 跨域redirect实例: te ...

最新文章

  1. 多条记录取最前面一条或根据条件任取N条
  2. 前端网页、php与mysql数据库字符编码(解决中文等乱码问题
  3. php如何给数组取名,给表单取名可以为数组,并且可以通过php打印出来
  4. 李宏毅机器学习课程4~~~分类:概率生成模型
  5. 大数据里的婚姻:婚后两年,出轨高峰……
  6. gateway 车辆网关
  7. 来自朋友最近阿里、腾讯、美团等P7岗位面试题
  8. scss编译输出css并转换成rem
  9. 十字路口待转区什么用_都知道“左转待转区”,但到底该怎么走?老司机给你一次讲清楚...
  10. python FastDFS
  11. STM32 HAL库手册获取和查阅方法以及查看官方例程
  12. Nginx核心原理揭秘:Nginx为什么高效?
  13. 电脑如何启用屏幕键盘(OSK)方法
  14. VBA完整学习笔记1-39集(共60集)
  15. 程序设计(二)——伪代码编程
  16. 直播平台搭建iOS 版本打包上架
  17. 静态时序分析 第六章 串扰和噪声
  18. js将时间戳转换成正常时间格式两种方法
  19. 百度提前批凤巢软件研发一面经验
  20. 老人与海好词100英文带翻译_老人与海英文版好词好句摘抄

热门文章

  1. 鸿钧老祖 数据结构笔记01:编程面试过程中常见的10大算法(java)
  2. 解锁bootloader_如何以官方方式解锁Android手机的Bootloader
  3. 国内外主流文档搜索网站
  4. 香港中文大学面试(两道面试题)
  5. AE 超人飞天特效 地面震裂崩飞效果 。SU 可以快速建立模型。室内室外。通过将CAD 的图拖拽 拉伸成面
  6. 安可目录入围产品名单(安可目录入围产品名单 服务器)
  7. 流水账 20200619
  8. fix feeds/telephony/net/freeswitch/Makefile
  9. 2021年西式面点师(初级)最新解析及西式面点师(初级)模拟考试
  10. 鼠标停留触发事件,离开时也触发