Shibboleth IdP安装指南(Windows)

1.   概述

Windows平台上,为了安装Shibboleth IdP,需要先安装JDK, Apache (支持SSL), JK, Tomcat, Ant, 再使用Shibboleth IdP的安装包进行安装。

示例安装中使用的安装包如下:

u  jdk-1_5_0_06-windows-i586-p.exe

u  apache_2.0.59-win32-x86-no_ssl.msi

u  apache-2[1].0.59_openssl-0.9.8d.zip

u  apache-tomcat-5.5.12.exe

u  mod_jk-apache-2.0.58.so

u  apache-ant-1.6.5-bin.zip

u  shibboleth-idp-1.3.2.zip

 

假设IdP安装在DNS名字为idp.pku.edu.cn的电脑上。

参照本安装说明进行安装,将使IdP加入CERNETFed联盟。在安装之前,CERNETFed联盟会为每一台加入的IdP提供以下4个文件:

u  名为idp.pku.edu.cn.crt的服务器证书;

u  名为idp.pku.edu.cn.key.nopwd的服务器私钥;

u  名为cernet-fed-metadata.xml的联盟元文件;

u  名为idp.xml的配置文件;

 

本次安装中,以上所有源文件放在D:\shibboleth_backup下,记该路径为$BACKUP

所有软件安装在D:\shibboleth,记该路径为$HOME

2.   搭建网络平台

2.1. 安装JDK

双击安装文件jdk-1_5_0_06-windows-i586-p.exe,将JDK安装到$HOME\jdk_1.5下,将JRE安装到$HOME\jre1.5.0下。

在右键单击“我的电脑”,选择“属性”->“高级”->“环境变量”,在用户变量中,如果没有”PATH”,增加PATH,值设为D:\shibboleth\jdk_1.5\bin”;如果已经有”PATH”,增加路径D:\shibboleth\jdk_1.5\bin”

2.2. 安装Httpd(支持SSL)

双击安装文件apache_2.0.59-win32-x86-no_ssl.msi,将Apache安装到$HOME\apache_2.0\Apache2下。

在用户环境变量PATH中,加入D:\shibboleth\apache_2.0\Apache2\bin .

2.2.1.    拷贝文件

解压apache-2[1].0.59_openssl-0.9.8d.zip。将bin目录下的4个文件libeay32.dllssleay32.dll, openssl, openssl.exe拷贝到$HOME\apache_2.0\Apache2\bin下,将conf下的两个文件httpd.conf, ssl.conf拷贝到$HOME\apache_2.0\Apache2\conf下,覆盖掉原有的文件,将modules目录下的两个文件mod_deflate.somod_ssl.so拷贝到$HOME\apache_2.0\Apache2\modules下。

2.2.2.    修改httpd.confssl.conf

修改$HOME\apache_2.0\Apache2\conf\httpd.conf,如下:

ServerName idp.pku.edu.cn

(以下内容是根据Apache的安装路径更改原来的httpd.conf中的相应路径)

ServerRoot "D:/shibboleth/apache_2.0/Apache2"

DocumentRoot "D:/shibboleth/apache_2.0/Apache2/htdocs"

<Directory "D:/shibboleth/apache_2.0/Apache2/htdocs">

Alias /icons/ "D:/shibboleth/apache_2.0/Apache2/icons"

<Directory "D:/shibboleth/apache_2.0/Apache2/icons">

AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ "D:/shibboleth/apache_2.0/Apache2/manual$1"

<Directory "D:/shibboleth/apache_2.0/Apache2/manual">

ScriptAlias /cgi-bin/ "D:/shibboleth/apache_2.0/Apache2/cgi-bin/"

<Directory "D:/shibboleth/apache_2.0/Apache2/cgi-bin">

修改$HOME\apache_2.0\Apache2\conf\ssl.conf,如下:

ServerName idp.pku.edu.cn:443

DocumentRoot "D:/shibboleth/apache_2.0/Apache2/htdocs"

2.2.3.    Httpd配置证书

将联盟提供的idp.pku.edu.cn.crtidp.pku.edu.cn.key.nopwd上传到$HOME\apache_2.0\Apache2\conf下。

修改$HOME\apache_2.0\Apache2\conf\ssl.conf

SSLCertificateFile conf/idp.pku.edu.cn.crt

SSLCertificateKeyFile conf/idp.pku.edu.cn.key.nopwd

2.3. 安装Tomcat

双击apache-tomcat-5.5.12.exe,将Tomcat安装到$HOME\Tomcat 5.5下。

2.4. 安装JK

mod_jk-apache-2.0.58.so拷贝到$HOME\apache_2.0\Apache2\modules下。

$HOME\apache_2.0\Apache2\conf\httpd.conf下,加入如下内容:

LoadModule jk_module modules/mod_jk-apache-2.0.58.so

JkLogFile "logs/mod_jk.log"

JkLogLevel debug

JkMount /shibboleth-idp/* ajp13w

JkMount /jsp-examples/* ajp13w

JkWorkerProperty worker.list=ajp13w

JkWorkerProperty worker.ajp13w.type=ajp13

JkWorkerProperty worker.ajp13w.host=localhost

JkWorkerProperty worker.ajp13w.port=8009  

$HOME\Tomcat 5.5\conf\server.xml中的元素<Connector port=”8009”  >中,加入以下内容:

address="127.0.0.1" request.tomcatAuthentication="false"

2.5. 安装Ant

Ant安装包apache-ant-1.6.5-bin.zip解压到$HOME下,在用户环境变量PATH中增加D:\shibboleth\apache-ant-1.6.5\bin

设置用户环境变量ANT_HOME= D:\shibboleth\apache-ant-1.6.5

设置用户环境变量JAVA_HOME= D:\shibboleth\jdk_1.5

2.6. HttpdTomcat的启动

启动Httpd,必须使用命令行方式,方法如下:

在路径$HOME\apache_2.0\Apache2\bin

# Apache.exe -k start -DSSL

启动Tomcat,可以使用图形界面方式,也可以使用命令行方式,建议使用命令行方式。

如果使用命令行方式,在路径$HOME\Tomcat 5.5\bin下,

# tomcat5.exe

2.7. 检查在此之前的安装是否正确

为了检查到目前为止的安装是否正确,在浏览器中输入以下2个地址:

http://idp.pku.edu.cn/jsp-examples/

https:// idp.pku.edu.cn/jsp-examples/

如果能够显示Tomcat自带的示例程序jsp-examples的页面,则安装正确;否则,之前的安装过程存在错误。

 

3.   安装IdP

3.1. IdP配置Apache基本认证方式

$HOME\apache_2.0\Apache2\conf下,

#htpasswd �Cc user.db Test_User_01

#htpasswd user.db Test_User_02

此时,在$HOME\apache_2.0\Apache2\conf下出现文件user.db

$HOME\apache_2.0\Apache2\conf\httpd.conf中,加入

<Location /shibboleth-idp/SSO>

    AuthType Basic

    AuthName "Villain Verification Service (VVS)"

    AuthUserFile conf/user.db

    require valid-user

</Location>

3.2. 为与SP进行属性交换对Apache进行配置

$HOME\apache_2.0\Apache2\conf\ssl.conf中,加入以下内容:

Listen 8443

 

<VirtualHost _default_:8443>

    SSLEngine on

    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

   

    SSLVerifyClient optional_no_ca

    SSLVerifyDepth 10

    SSLOptions +StdEnvVars +ExportCertData

    SSLCertificateFile conf/idp.pku.edu.cn.crt

    SSLCertificateKeyFile conf/idp.pku.edu.cn.key.nopwd

 

    ErrorLog logs/ssl_error_log

    TransferLog logs/ssl_access_log

</VirtualHost>

 

3.3. 编译部署IdP

$HOME下创建目录shibboleth-idp

shibboleth-idp-1.3.2.zip解压到$BACKUP/shibboleth-1.3.2-install

$BACKUP/shibboleth-1.3.2-install下执行

#ant

ant要求提供IdP home directory时,输入:

#D:\shibboleth\shibboleth-idp

ant要求提供Tomcat home directory时,输入:

#D:\shibboleth\Tomcat 5.5

3.4. 配置IdP加入CERNETFed

①将联盟提供的文件cernet-fed-metadata.xmlidp.xml拷贝到$HOME\shibboleth-idp\etc下。

②修改$HOME\shibboleth-idp\etc\idp.xml

<FileResolver Id="cernetfed_creds">元素中的两个<Path>元素中的路径进行修改:

<Key>

       <Path>file:/d:/shibboleth/apache_2.0/Apache2/conf/idp.pku.edu.cn.key.nopwd</Path>

</Key>

<Certificate>

       <Path>file:/d:/shibboleth/apache_2.0/Apache2/conf/idp.pku.edu.cn.crt</Path>

</Certificate>

③修改$HOME \shibboleth-idp\etc\idp.xml,将其中的5”file:/home/ncpku”改为”file:/d:/shibboleth

3.5. 检查在此之前的安装是否正确

重启HttpdTomcat

为了检查到目前为止的安装是否正确,在浏览器中输入以下地址:

https://idp.pku.edu.cn/shibboleth-idp/SSO

首先出现一个对话框询问是否接受证书,选择“是”后,弹出窗口要求输入用户名和密码,输入3.1节中设置的用户名和密码,出现包含如下信息的错误页面:

“Shibboleth Identity Provider Failure
org.opensaml.SAMLException: Invalid data from Service Provider: no target URL received”

这说明到此为止的安装正确。否则,安装存在错误。

3.6. 配置IdP使用认证门户进行认证

$HOME\apache_2.0\Apache2\conf\httpd.conf中,将3.1节中加入的内容注释掉。

$HOME\shibboleth-idp下创建文件user.conf,该文件每行的内容为“用户名:密码”,如“haha:haha”。这是以后用户要在门户上输入的用户名和密码。

$BACKUP\shibboleth-idp-1.3c-install\webAppConfig\dist.idp.xml中,加入
<filter>

        <filter-name>Client Cert AuthN Filter</filter-name>

        <filter-class>edu.internet2.middleware.shibboleth.utils.ClientFlatFileFilter</filter-class>

        <init-param>

                <param-name>portalURL</param-name>

                <param-value>interia.pku6.edu.cn</param-value>

        </init-param>

        <init-param>

                <param-name>cmdfile</param-name>

                <param-value>D:/shibboleth/shibboleth-idp/user.conf</param-value>

        </init-param>

</filter>                                                                                   

<filter-mapping>

        <filter-name>Client Cert AuthN Filter</filter-name>

        <url-pattern>/SSO</url-pattern>

</filter-mapping>

④把ClientFlatFilter.java拷贝到$BACKUP\shibboleth-idp-1.3c-install\src\edu\internet2\middleware\shibboleth\utils下。

$BACKUP/shibboleth-idp-1.3c-install下执行

#ant

此时,若在某个SP上将资源指向该IdP,当用户试图访问资源时,会被重定向到门户,输入②中设定的用户名和密码,就可以访问该资源。也可以先访问认证门户,输入②中设定的用户名和密码,再访问该资源。