安装配置Shibboleth

简介: 0.前言 本文介绍了如何搭建Shibboleth,实现Shibboleth+Ldap的SSO解决方案 1.什么是Shibboleth Shibboleth是一个基于标准的,实现组织内部或跨组织的网页单点登录的开源软件包。

0.前言

本文介绍了如何搭建Shibboleth,实现Shibboleth+Ldap的SSO解决方案

1.什么是Shibboleth

Shibboleth是一个基于标准的,实现组织内部或跨组织的网页单点登录的开源软件包。它允许站点为处于私有保护方式下的受保护的在线资源做出被通知的认证决定。

Shibboleth软件工具广泛使用联合的身份标准,主要是OASIS安全声称标记语言(SAML),来提供一个联合单点登录和属性交换框架。一个用户用他的组织的证书认证,组织(或IdP)传送最少的必要的身份信息给SP实现认证决定。Shibboleth也提供扩展的隐私功能,允许一个用户和他们的主站点来控制释放给每一个应用的属性。

Shibboleth项目作为一个Internet2中间件活动启动于2000年,这年晚些时候该项目和OASIS SAML工作组的工作相联系。Shibboleth1.0 于2003年发布,并快速被全世界的研究和教育机构使用。随着2005年SAML2.0的发布,2006年Shibboleth2.0也发布,SAML标准升级到包含所有的多边,由Shibboleth首创的元数据驱动方法。

Shibboleth作为开源软件开发,在Apache 软件许可证下发布。关于个别部件的更多信息可以在产品页面看到。

2.安装Shibboleth Identity Provider v3.2.1

  1. 切换成root
sudo su 

2.下载Shibboleth Identity Provider v3.2.1

wget http://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-3.2.1.tar.gz
tar -xzvf shibboleth-identity-provider-3.2.1.tar.gz
cd shibboleth-identity-provider-3.2.1

3.安装Shibboleth Idenentity Provider:

sh-3.2# ./install.sh 
Source (Distribution) Directory (press <enter> to accept default): [/Users/zhaoyu.zhaoyu/Applications/shibboleth-identity-provider-3.3.2]

Installation Directory: [/opt/shibboleth-idp]

Hostname: [localhost.localdomain]
testdomain.com
SAML EntityID: [https://testdomain.com/idp/shibboleth]

Attribute Scope: [localdomain]

Backchannel PKCS12 Password: 
Re-enter password: 
Cookie Encryption Key Password: 
Re-enter password: 
Warning: /opt/shibboleth-idp/bin does not exist.
Warning: /opt/shibboleth-idp/dist does not exist.
Warning: /opt/shibboleth-idp/doc does not exist.
Warning: /opt/shibboleth-idp/system does not exist.
Warning: /opt/shibboleth-idp/webapp does not exist.
Generating Signing Key, CN = testdomain.com URI = https://testdomain.com/idp/shibboleth ...
...done
Creating Encryption Key, CN = testdomain.com URI = https://testdomain.com/idp/shibboleth ...
...done
Creating Backchannel keystore, CN = testdomain.com URI = https://testdomain.com/idp/shibboleth ...
...done
Creating cookie encryption key files...
...done
Rebuilding /opt/shibboleth-idp/war/idp.war ...
...done

BUILD SUCCESSFUL
Total time: 1 minute 14 seconds 

(from now "{idp.home}" == /opt/shibboleth-idp/)
4.导入 JST library (status界面会用到):

cd /opt/shibboleth-idp/edit-webapp/WEB-INF/lib
wget https://build.shibboleth.net/nexus/service/local/repositories/thirdparty/content/javax/servlet/jstl/1.2/jstl-1.2.jar
cd /opt/shibboleth-idp/bin
./build.sh -Didp.target.dir=/opt/shibboleth-idp

3.安装指引

3.1 安装apache tomcat 8

1.切换成root

sudo su -

2.修改tomcat的%{CATALINA_HOME}/conf/server.xml
将8080端口和8443端口的地方分别改成80和443

 <Connector port="80" protocol="HTTP/1.1"                                                                                    
               connectionTimeout="20000"
               redirectPort="443" />

3.生成证书文件

[chengxu@local]keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "./tomcat.keystore"
输入密钥库口令:  
再次输入新口令: 
您的名字与姓氏是什么?
[Unknown]:  cheng
您的组织单位名称是什么?
[Unknown]:  testdomain.com
您的组织名称是什么?
[Unknown]:  testdomain.com
您所在的城市或区域名称是什么?
[Unknown]:  
您所在的省/市/自治区名称是什么?
[Unknown]:  
该单位的双字母国家/地区代码是什么?
[Unknown]:  
CN=cheng, OU=testdomain.com, O=testdomain.com, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]:  是 

输入 <tomcat> 的密钥口令
  (如果和密钥库口令相同, 按回车):  
再次输入新口令: 
[chengxu@local]

4.修改tomcat的%{CATALINA_HOME}/conf/server.xml,使支持https协议

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
                maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                clientAuth="false" sslProtocol="TLS" 
                keystoreFile="/Users/chengxu/Shibboleth/tomcat/tomcat.keystore"   
                keystorePass="xxx"/> 

5.发布Idp Web Application到Tomcat 8 container

vim %{CATALINA_HOME}/conf/Catalina/localhost/idp.xml
<Context docBase="/opt/shibboleth-idp/war/idp.war"
         privileged="true"
         antiResourceLocking="false"
         swallowOutput="true"/>

4.配置host

vim /etc/host
127.0.0.1 testdomain.com

5.重启tomcat
%{CATALINA_HOME}/bin/catalina.sh stop
%{CATALINA_HOME}/bin/catalina.sh start
6.检测是否服务启动正常
访问https://testdomain/idp/status
或者/opt/shibboleth-idp/bin; ./status.sh

3.2 配置shibboleth连接ldap

编辑修改ldap.properties

vim /opt/shibboleth/conf/ldap.properties

idp.authn.LDAP.authenticator = bindSearchAuthenticator
idp.authn.LDAP.ldapURL = ldap://ldap.example.it:389
idp.authn.LDAP.useStartTLS = false
idp.authn.LDAP.useSSL = false
idp.authn.LDAP.baseDN = cn=Users,dc=example,dc=org
idp.authn.LDAP.userFilter = (uid={user})
idp.authn.LDAP.bindDN = cn=admin,cn=Users,dc=example,dc=org
idp.authn.LDAP.bindDNCredential = ###LDAP ADMIN PASSWORD###

6.修改shibboleth ldap配置

vim /opt/shibboleth/conf/services.xml

把
<value>%{idp.home}/conf/attribute-resolver.xml</value>
改为
<value>%{idp.home}/conf/attribute-resolver-full.xml</value>
vim /opt/shibboleth-idp/conf/attribute-resolver-full.xml

注释掉下列代码,如果已经注释掉了就不动了(有些版本已经注释了)

<!--
<dc:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked">
  <sec:Certificate>%
    {idp.attribute.resolver.LDAP.trustCertificates}</sec:Certificate>
  </dc:StartTLSTrustCredential>
-->

重启tomcat

7.获取idp metadata.xml
https://testdomain.com/idp/shibboleth
注意metadata.xml文件中的validUntil属性,如果过期了则修改为未来的某个时间点

4.小结

至此我们完成了Shibboleth与LDAP集成的安装过程

下篇: 实现Shibboleth+Ldap到阿里云的单点登录

目录
相关文章
|
XML 存储 安全
【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑
SAML(Security Assertion Markup Language)是由OASIS制定的基于XML的开放标准。它用于在身份提供者(IdP)和服务提供者(SP)之间交换身份验证和授权数据,从而支持跨域单点登录,提高身份认证和授权管理的安全性和效率。
803 2
【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑
|
存储 SQL 安全
MySQL 安全加固配置(等保二级)
数据库安全是等保测评和网络安全中的重要的一项内容,本文介绍一些常见的加固配置。
4820 0
|
存储 固态存储 架构师
【最佳实践】Elasticsearch Snapshot 备份的使用方法
常见的数据库都会提供备份的机制,以解决在数据库无法使用的情况下,可以开启新的实例,然后通过备份来恢复数据减少损失。
6935 0
【最佳实践】Elasticsearch Snapshot 备份的使用方法
|
Java Maven
Maven - 国内Maven仓库之阿里云Aliyun仓库地址及设置
Maven - 国内Maven仓库之阿里云Aliyun仓库地址及设置
17407 1
Maven - 国内Maven仓库之阿里云Aliyun仓库地址及设置
|
10月前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
5641 12
|
11月前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
905 4
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
存储 缓存 NoSQL
【缓存】J2Cache —— 基于内存和 Redis 的两级 Java 缓存框架的使用方法
【缓存】J2Cache —— 基于内存和 Redis 的两级 Java 缓存框架的使用方法
701 0
|
运维 安全 Ubuntu
`/var/log/syslog` 和 `/var/log/messages` 日志详解
`/var/log/syslog` 和 `/var/log/messages` 是Linux系统的日志文件,分别在Debian和Red Hat系发行版中记录系统事件和错误。它们包含时间戳、日志级别、PID及消息内容,由`rsyslog`等守护进程管理。常用命令如`tail`和`grep`用于查看和搜索日志。日志级别从低到高包括`debug`到`emerg`,表示不同严重程度的信息。注意保护日志文件的安全,防止未授权访问,并定期使用`logrotate`进行文件轮转以管理磁盘空间。
4682 1
|
前端开发 JavaScript API
Keycloak快速上手指南(一)
Keycloak快速上手指南
2539 0