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
注意: 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
界面如下图:输入有管理员权限的用户名密码