Shibboleth Installation(Shibboleth安装)
Shibboleth包含几个单独的组件: the identity provider(IdP), service provider(SP), and discovery service(DS)。你可以根据自
己的需要选择部署一个或更多的组件。在开始之前需要理解以下几步:
1.在安装之前必须阅读并理解Shibboleth的文档以及工作流程的介绍。
2.如果在安装的过程中遇到了问题,请按照以下几点进行检查。
1) 参阅安装和配置文件。
2) 检查故障排除指南。
3) 检查用户的邮件列表归档,看看其他人有没有遇到同样的问题,解决办法是什么。
4) 从用户的邮件列表中寻求帮助。
3. 安装完毕后,你应该也可以订阅Shibboleth的公告,这是关于新版本的公告,更新旧版本至最新,与安全漏洞发布。
一、 准备安装环境
准备安装环境所需要的域名:
1.sp.machine为SP的域名,eg: exm1.sea.sp.com
2.idp.machine 为IDP的域名,eg: exm2.sea.idp.com
我本地准备的SP和IDP的域名分别为exm1.sea.sp.com,exm2.sea.idp.com。在使用之前首先要在windows的C:\WINDOWS\system32\drivers\etc路径下的Hosts文件中配置以上域名的映射,配置如下:
127.0.0.1 localhost
127.0.0.1 exm1.sea.sp.com
127.0.0.1 exm2.sea.idp.com
准备安装所需的硬件设备(SP和IDP可以分别安装在不同的电脑或者安装在不同的虚拟机上,也可以安装在同一台计算机上!)。
1)端口80和443需要被开放(保证没有其他程序在占用),注意防火墙对端口访问权限的问题。
2)用RedHat环境是最简单的,这里我用的是windows,在安装的过程中基本是一样的。
3)确保硬件环境的时钟设置是正确的。
二、 IDP的安装
1.下载安装JDK1.5+,Tomcat6.0.17+,Apache2.2+,并确保JAVA_HOME环境变量的正确设置,这里我用的是JDK1.6,Tomcat6.0.29, Apache 2.2。
注:必须从http://httpd.apache.org/网站上下载包含SSL支持的Apache安装程序并安装。
2.下载IDP组件,下载之后解压并将解压之后的目录移动到你所要安装的目标目录。
(IDP下载地址为:http://shibboleth.internet2.edu/downloads/shibboleth/idp/latest/,我下载的是shibboleth-identityprovider-2.2.0-bin.zip)
3.运行install.sh (linux环境) 或者 install.bat (Windows环境),进行安装。
注意:在安装过程中需要输入的idp.home为IDP的安装目录,eg: D:\opt\shibboleth-idp,需要输入的idp.hostname为IDP的域名(最好不要用IP地址,要不然后续过程会有错误出现),eg:exm2.sea.idp.com。
4.所需的配置
将IDP_HOME/lib/endorsed下的所有包复制到TOMCAT_HOME/endorsed下,IDP_HOME和TOMCAT_HOME分别指IDP和TOMCAT的安装目录(如果TOMCAT根目录下没有endorsed文件夹则新建一个即可)。
5. 支持SOAP端点
1) 下载tomcat6-dta-ssl-1.0.0.jar (asc)放到TOMCAT_HOME/lib/目录下。
2) 在TOMCAT_HOME/conf/server.xml中增加如下的配置:
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11Protocol"
SSLImplementation="edu.internet2.middleware.security.tomcat6.DelegateToApplicationJSSEImplementation"
scheme="https"
SSLEnabled="true"
clientAuth="true"
keystoreFile="IDP_HOME/credentials/idp.jks"
keystorePass="PASSWORD" />
6. 用IDP的安装路径取代IDP_HOME。
7. 在安装IDP过程中用到的密码替换掉PASSWORD。
8. 部署IDP:
1)创建TOMCAT_HOME/conf/Catalina/localhost/idp.xml文件并用以下代码替换其内容。
<Context docBase="IDP_HOME/war/idp.war"
privileged="true"
antiResourceLocking="false"
antiJARLocking="false"
unpackWAR="false"
swallowOutput="true" />
2)用IDP的安装路径取代IDP_HOME。
9. 加入以下行至Apache的配置文件httpd.conf中:
ProxyPass /idp/ ajp://localhost:8009/idp/
10. 更改Tomcat的TOMCAT_HOME/conf/server.xml中的端口8009 AJP13连接器,我们将要增加 request.tomcatAuthentication="false"和Address="127.0.0.1"让Apache允许发送用户名信息到IDP。
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
request.tomcatAuthentication="false" address="127.0.0.1" />
11. 在Apache的httpd.conf或ssl.conf配置文件中定义以下程序,强制身份验证的时候访问RemoteUser处理程序。
<Location /idp/Authn/RemoteUser>
AuthType Basic
AuthName "My Identity Provider"
AuthUserFile D:/opt/shibboleth-idp/credentials/user.db
require valid-user
</Location>
12. 用htpasswd命令创建一个或两个测试用户
htpasswd -c D:/opt/shibboleth-idp/credentials/user.db myself
htpasswd命令为Apache工具命令必须在命令行下进入到Apache安装目录的bin目录下才可以执行,myself为用户名。
13. 测试IDP是否安装成功:
用https://localhost/idp/profile/Status访问,如果页面出现’ok’则说明安装正确。这并不意味着你将能够登录到任何东西,因为目前还尚未配置的IDP使用的组织的基础设施。
三、安装SP
Windows下安装
SP目前支持的windows操作系统有以下几个版本:
1)Windows XP SP2 and Later
2)Windows 2003 Server SP1 and Later
3)Windows 2008 Server
1.安装Shibboleth
1)下载后缀名为.msi的SP安装程序,下载网址为:
http://shibboleth.internet2.edu/downloads/shibboleth/cppsp/latest/
2) 运行安装程序。安装程序将提示输入安装路径,更改默认的配置文件与Windows适当,并为您设置各种环境变量。默认的shibd服务也被安装。
2.基本配置
编辑Apache安装目录下的conf文件夹下的httpd.conf文件:
1) 用Include指令将Shibboleth对应apache版本的配置文件包含至httpd.conf文件中(eg:在httpd.conf中添加
Include D:/opt/shibboleth-sp/etc/shibboleth/apache22.config)。
2) UseCanonicalName指令设置为on.(eg:UseCanonicalName On)。
3) 确保ServerName指令设置正确(eg:ServerName exm1.sea.sp.com:80)。
配置Apache使其支持SSL协议,创建过程如下所示:
创建SSL证书
1) 打开cmd, cd到apache安装目录的bin目录
2) 运行openssl
openssl req -config ..\conf\openssl.cnf -new -out my-server.csr
( 注意, my-server是自己起的名字, 以下步骤中提到my-server的也是自己起的名字) 这一步需要设置一系列的问题, 包括密码(这个密码要记住, 以后要用) 和其他的问题. 全部完成之后会生成一个my-server.csr和 privkey.pem 文件在bin文件夹中.)
3) 运行
openssl rsa -in privkey.pem -out my-server.key
(此时要输入密码, 就是步骤2中设定的密码)
4) 运行
openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 4000
这将创建一个4000天后才过期的证书
5) 运行
openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
6) 全部运行过后这些命令会在bin文件夹中生成6个文件:
.cnt
privkey.pem
my-server.der.crt
my-server.scr
my-server.key
my-server.cert
(将这些文件移到conf/ssl目录中(如果不存在这个目录就创建一个, 这个步骤中放到其他的目录也可以 关键是记住文件的位置, 在接下来的设置中会用到)
设置Apache支持SSL
注意: 本设置步骤针对针对Apache 2.2.x版本, 如果正在使用的是Apache 2.0.x版本, 请摸索相似的设置.
在Apache的conf目录中用文本编辑器打开httpd.conf
1) 去掉下面设置行前面的#
LoadModule ssl_module modules/mod_ssl.so
2) 去掉下面设置行前面的# (在2.0.x版本中没有这一项)
Include conf/extra/httpd-ssl.conf
3) 在Apache的conf/extra目录中打开httpd-ssl.conf, 更改如下设置.
[apache安装目录]是指Apache的安装目录, 比如c:/Apache; my-server的两个文件就是前一个步骤制作的文件, 文件的位置就是这些文件在磁盘中的位置 (在2.0.x版本中这些设置仍然在 httpd.conf文件中进行)
SSLMutex default
SSLCertificateFile "[Apache安装目录]/conf/ssl/my-server.der.crt"
SSLCertificateKeyFile "[Apache安装目录]/conf/ssl/my-server.key"
测试
1) 保存设置文件。
2) 在开始菜单中运行Apache的Test Configuration工具, 检查设置文件是否正确。
3) 重新启动Apache 2.2.x。
4) 顺利启动之后, 在浏览器中输入 https://localhost 看看是否可以访问, 如果可以访问, 则设置成功。
3. SP安装测试
用https://localhost/Shibboleth.sso/Status访问测试,如果测试成功,那么该软件为进一步的配置做好了基本的准备。
四、 IDP and SP本地测试的基本配置
我们需要配置IDP和SP相互间的交互,注意配置:
SP的配置文件在 /etc/shibboleth/ 目录下:
SP:shibboleth2.xml:
1) 改变<ApplicationDefaults>节点元素的entityID为
https://sp.machine/shibboleth,sp.machine为SP的域名。(Eg:https://exm1.sea.sp.com/shibboleth)
2) 改变<SessionInitiator Location="Login">节点元素的entityID为
https://idp.machine/idp/shibboleth,idp.machine为IDP的域名。(eg: https://exm2.sea.idp.com/idp/shibboleth)
3) 取消对远程元数据例子<MetadataProvider>节点的注释,这里将要描述你的IDP到SP,改变这个uri指向http://idp.machine/idp/profile/Metadata/SAML,idp.machine为IDP的域名。
Eg: http://exm2.sea.idp.com/idp/profile/Metadata/SAML
4) 注解或删除掉类型为Signature的<MetadataFilter>节点,因为这个元数据没有被签名。
Eg:
<MetadataProvider type="XML" uri="http://exm2.sea.idp.com/idp/profile/Metadata/SAML"
backingFilePath="federation-metadata.xml" reloadInterval="7200">
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>(这个没有注解或删除的情况下会报:Unable to locate metadata for identity provider,不知道为什么,有待解决!)
</MetadataProvider>
IDP的配置文件在 IDP_HOME/conf 目录下:
IdP: relying-party.xml:
1) 取消掉从一个URL读取元数据MetadataProvider节点元素的注释,将该节点元素的metadataURL属性改为
http://sp.machine/Shibboleth.sso/Metadata。更高级的部署,你需要手工编辑元数据进行匹配。
2) 注释掉包含在MetadataProvider元素中的MetadataFilter节点元素,这个元数据是未签名的,所以这个过滤器可能会引起元数据加载失败!
Eg:改变之后的为:
<metadata:MetadataProvider id="URLMD" xsi:type="metadata:FileBackedHTTPMetadataProvider"
metadataURL="http://exm1.sea.sp.com/Shibboleth.sso/Metadata"
backingFile="D:/opt/shibboleth-idp/metadata/some-metadata.xml">
</metadata:MetadataProvider>
登陆测试:
用浏览器访问https://sp-machine/secure进行测试. 注意:别忘了https
分享到:
相关推荐
Shibboleth是一款广泛用于身份验证和授权的开源软件,主要在教育和研究机构中用于实现单点登录(Single Sign-On, SSO)服务。它分为两个主要组件:Identity Provider (IdP) 和 Service Provider (SP)。在这个场景中...
shibboleth.part1 Shibboleth是一个针对SSO的开源项目。
而CAS则是一个开源的单一登录(Single Sign-On,SSO)服务器,可为各种应用提供统一的验证服务。本文将深入探讨如何在系统环境中安装Shibboleth,并将其配置为使用CAS作为验证源。 一、Shibboleth安装步骤 1. **...
Shibboleth是一款广泛用于身份验证和授权管理的开源软件,尤其在教育和研究机构中常见。它通过 Shibboleth Service Provider (SP) 和 Identity Provider (IdP) 的交互,实现了单点登录(Single Sign-On, SSO)功能。...
结合跨域统一身份认证的基础技术平台Shibboleth和跨域统一身份认证的技术标准SAML,设计出跨校统一身份认证系统。该系统可实现用户“异地访问—本地认证”功能,避免了异地认证的繁琐,简化了业务流程;身份联盟各子...
Shibboleth 是一个开源的身份认证和授权解决方案,广泛应用于单点登录(Single Sign-On, SSO)场景。本文将深入探讨如何在 Laravel 开发环境中整合 Shibboleth,以实现高效且安全的用户认证。 **1. Shibboleth 简介...
Shibboleth IDP 是一个开源的单点登录(Single Sign-On, SSO)解决方案,它允许用户在多个应用之间共享身份信息,而无需反复登录。它支持多种身份验证协议,如 SAML(Security Assertion Markup Language)2.0 和 ...
CARSI(China Academic Library & Information System)是高校身份认证联盟,它与中国高等教育文献保障系统(CALIS)和数字资源授权联盟(DRAA)合作,推出了基于Shibboleth的跨域身份认证服务。该联盟的目的是为了...
常见的CAS服务器实现有开源项目如 Jasig CAS 和 Shibboleth。 2. **服务提供者(Service Provider,SP)**:是那些需要用户身份验证的应用或系统,它们信任CAS服务器,并在用户尝试访问时引导用户到CAS服务器进行...
uPortal是一个开源的、基于Java的门户框架,用于构建企业或教育机构的内部网站。它提供了集成各种Web应用、个性化布局以及社区建设等功能。uPortal 3.1.1是该框架的一个版本,包含了SSO支持。 实现基于JSP的SSO与...
2. **Shibboleth**:Shibboleth是一个基于SAML的单点登录(SSO)系统,允许用户在一个站点上登录后,无须再次认证即可访问其他参与站点。Shibboleth通过Web服务器插件和 Shibboleth Identity Provider (IdP) 以及...
2. CAS服务器:可以是开源的Java CAS Server或其他认证服务器,如Keycloak、Shibboleth等。CAS服务器处理用户的登录请求,验证凭证并生成安全票据。 3. 客户端应用程序:这些是依赖于SSO服务的Java EE应用。它们...
Shibboleth基于SAML(Security Assertion Markup Language)协议,通过在HTTP请求中传递安全令牌,实现单点登录(Single Sign-On, SSO)功能。这样,用户只需要登录一次,就能访问多个相互信任的网络服务,无需重复...
- Shibboleth:一个开源的SSO解决方案,特别适合教育和研究机构。 - CAS(Central Authentication Service):一个开源的Web认证框架。 总的来说,单点登录是现代企业信息化建设中的重要组成部分,对于提高用户体验...
开源SSO实现有CAS、Shibboleth和Ping Identity。 4. 身份同步与目录同步工具:如FreeIPA和Microsoft's Azure AD Connect,它们能同步不同来源的身份数据,如本地AD到云服务。 服务供应则是关于如何有效地创建、...
StudiCloud是一款基于OpenNebula的开源云环境管理工具,专为提升用户在云环境中的操作体验而设计。OpenNebula是一个强大的开源云计算管理平台,它允许组织构建私有云、混合云以及多云解决方案,以满足企业对计算资源...
**PESOS 开源项目详解** PESOS...然而,对于大型或高安全性的网络环境,可能需要更复杂的SSO系统,如 Shibboleth 或 CAS。在使用 PESOS 时,开发者应理解其局限性,并确保采取适当的措施增强安全性。
在实际应用中,openSAML通常与 Shibboleth 结合使用,Shibboleth是一个流行的开源SSO解决方案,它基于openSAML实现了IdP和SP的功能。通过Shibboleth,开发者可以快速搭建安全的SSO环境,实现跨组织的身份验证。 ...
Laravel 是一个基于 PHP 的流行开源框架,以其优雅的语法和强大的功能深受开发者喜爱。在Laravel开发中,"laravel-saml2"通常指的是一个扩展包,它为 Laravel 提供了支持 Security Assertion Markup Language (SAML)...