安装配置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到阿里云的单点登录

目录
相关文章
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
XML 存储 安全
【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑
SAML(Security Assertion Markup Language)是由OASIS制定的基于XML的开放标准。它用于在身份提供者(IdP)和服务提供者(SP)之间交换身份验证和授权数据,从而支持跨域单点登录,提高身份认证和授权管理的安全性和效率。
948 2
【揭秘SAML协议 — Java安全认证框架的核心基石】 从初识到精通,带你领略Saml协议的奥秘,告别SSO的迷茫与困惑
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
164961 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
20365 2
|
应用服务中间件 网络安全 nginx
Nginx配置WebSocket 【支持wss与ws连接】
Nginx配置WebSocket 【支持wss与ws连接】
10106 1
|
消息中间件 存储 Java
吃透 RocketMQ 消息中间件,看这篇就够了!
本文详细介绍 RocketMQ 的五大要点、核心特性及应用场景,涵盖高并发业务场景下的消息中间件关键知识点。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
吃透 RocketMQ 消息中间件,看这篇就够了!
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
28934 73
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
1165 4
|
存储 缓存 NoSQL
【缓存】J2Cache —— 基于内存和 Redis 的两级 Java 缓存框架的使用方法
【缓存】J2Cache —— 基于内存和 Redis 的两级 Java 缓存框架的使用方法
833 0