ubuntu12.04中shibboleth布署
0. 环境
操作系统:ubuntu12.04
shibboleth版本:2.4.4
gitlab版本:8.6
1.shibboleth框架
三台虚拟机,一台作为idp,一台作为sp,一台作为ldap
Idp机器:内部IP为192.168.1.137 外部访问url为http://os.cs.tsinghua.edu.cn/mooc-idp/
SP机器:内部IP为192.168.1.136 外部访问url为http://os.cs.tsinghua.edu.cn/mooc-gitlab
ldap机器:内部IP为192.168.1.138 外部访问url为http://os.cs.tsinghua.edu.cn/ldapadmin
原理:SP机器上安装gitlab,把gitlab原有的登录认证改为通过shibboleth认证,当在gitlab登录页面点击Shibboleth按钮时会转发到Idp机器,Idp机器与ldap机器连接,从ldap获取属性,Idp判断之后返回给SP(gitlab)
2.布署ldap
2.1 安装OpenLDAP及可视化工具
ubuntu官方安装流程:https://help.ubuntu.com/lts/serverguide/openldap-server.html
若有需要,请自行安装phpldapadmin(方便网页端访问LDAP)
该镜像已包含phpldapadmin(方便网页端访问LDAP),若从其他渠道安装LDAP,请自行安装该工具。
2.2 利用eduperson.ldif创建模式eduPerson
ldapadd -Y EXTERNAL -H ldapi:/// -f <path of eduperson.ldif>
2.3 登录管理员账号创建存储用户的结点,例如ou=Users,dc=cscw
或者使用命令行添加用户结点
ldapadd -x -D "cn=admin,dc=cscw" -W -f create_group.ldif
2.4 test_ldap.py可用于测试OpenLDAP是否正常工作(修改其中的ip,baseDN以及searchFilter参数,保持与IDP中的配置一致, 详细可参考shibboleth仓库中的配置文件)
2.5 create_user.ldif用于手动创建用户(修改其中的用户参数),用法同create_group.ldif
3. 布署IDP
3.1安装IDP
3.2 验证IDP与Ldap链接是否正常
跟据上述链接安装好IDP后,下面来验证IDP能否与Ldap正常链接。
(1)
在IDP机器上创建文件test.py ,文件内容如下:
import ldap
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
l = ldap.initialize("ldap://192.168.1.138")
l.set_option(ldap.OPT_REFERRALS, 0)
l.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
l.set_option(ldap.OPT_X_TLS,ldap.OPT_X_TLS_DEMAND)
l.set_option( ldap.OPT_X_TLS_DEMAND, True )
l.set_option( ldap.OPT_DEBUG_LEVEL, 255 )
baseDN = "ou=Users,dc=cscw"
searchScope = ldap.SCOPE_SUBTREE
retrieveAttributes = None
searchFilter = "cn=*z*"
ldap_result_id = l.search(baseDN, searchScope, searchFilter)
result_set = []
while 1:
result_type, result_data = l.result(ldap_result_id, 0)
if (result_data == []):
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
print result_set
把上面内容的
ldap://192.168.1.116:389改为你的ldap的ip
baseDN="ou=Users,dc=cscw" 改为你的ldap的baseDN
searchFilter="cn=*Li*" 改为你在ldap建的用户
(2)执行下面的命令:
sudo apt-get install python-ldap
python test.py
可以看到如下的结果(返回用户属性),证明IDP与Ldap链接正常。
3.3 在IDP端配置LDAP验证
在3.2中我们己经保证了能够从IDP机器链接到Ldap机器并获得用户的属性。接下来我们通过修改IDP端的配置文件来实验IDP与LDAP链接验证。
3.3.1 修改handler.xml
输入下面的命令:
vi /opt/shibboleth-idp/conf/handler.xml