IDP安装配置文档
本文主要说明IDP的安装过程,适用于有一定apache和tomcat部署基础的人员。
安装IDP
1:首先解压shibboleth-identityprovider-2.3.3-bin.zip,进入文件件之后,install.bat文件。进行IDP安装
填写安装路径,回车,我这里就是安装在f:\opt-idp中。如果文件夹已经存在,则会有提示,输入yes回车即可。
2: 配置IDP域名:这里输入IDP对应的域名即可。如果没有域名,则输入IP。回车。
第三步需要输入证书密码。我这里输入dsideal:
如果不报错,就说明IDP安装成功。
系统安装成功之后,形成的目录结构如上。其中,需要配置的主要是conf目录中的文件。War文件夹中形成的是war文件,该文件我们可以不用他的,而是用我们自行编译的文件放置到tomcat中。
安装完毕idp之后,我们需要对idp进行相应的配置:
<rp:AnonymousRelyingPartyprovider="http://10.10.8.31:8080/idp/shibboleth"defaultSigningCredentialRef="IdPCredential"/>
<rp:DefaultRelyingParty provider="http://10.10.8.31:8080/idp/shibboleth"defaultSigningCredentialRef="IdPCredential">
这里我们没有采用ssl配置。
默认的idp的标示文件是在idp安装目录下的metadata文件夹下的
Idp-metadata.xml文件。
编辑该文件。使得其中的应用名称和地址正确。如果不使用ssl。则将所有的https更改为http。将8443端口改为相应的应用端口。
配置IDP与其信任的SP
配置IDP信任的SP主要是通过IDP根目录中/conf/relying-party.xml 文件配置,在MetadataProvider 中添加:
<metadata:MetadataProviderid="IdPMD" xsi:type="metadata:FilesystemMetadataProvider"
metadataFile="e:\shibboleth\idp/metadata/idp-metadata.xml"
maxRefreshDelay="P1D" />
<metadata:MetadataProviderid="school1SP" xsi:type="metadata:FileBackedHTTPMetadataProvider"
metadataURL="http://10.10.8.31/Shibboleth.sso/Metadata"
backingFile="e:/shibboleth/idp/metadata/sp-school1.xml">
</metadata:MetadataProvider>
<metadata:MetadataProviderid="school2SP"xsi:type="metadata:FileBackedHTTPMetadataProvider"
metadataURL="http://10.10.8.30/Shibboleth.sso/Metadata"
backingFile="e:/shibboleth/idp/metadata/sp-school2.xml">
</metadata:MetadataProvider>
配置IDP使用CAS验证
1:编辑handler.xml文件中的login handlers部分
<!-- Login Handlers -->
<ph:LoginHandlerxsi:type="ph:RemoteUser">
<ph:AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</ph:AuthenticationMethod>
<ph:AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</ph:AuthenticationMethod>
</ph:LoginHandler>
2:将IDP作为CAS客户端进行接入
这里其实就是简单的将IDP应用作为一个CAS客户端进行接入即可。
参见《统一认证系统接入文档》
<filter>
<filter-name>filterchainproxy</filter-name>
<filter-class>dsidealsso.FilterChainProxy</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>
http://10.10.8.33:8080/dsssoserver/login
</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://localhost:8030</param-value>
</init-param>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>http://10.10.8.33:8080/dsssoserver</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>nofilter</param-name>
<param-value>/shibboleth**</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filterchainproxy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
IDP自身配置
如果使用IDP没有域名,则需要对IDP配置文件进行配置
IDP用户属性传递
IDP能够向用户传递那些属性主要取决于attribute-resolver.xml文件。
在该文件中定义数据源和响应的用户属性查询语句,然后通过<dc:Column>标签定义查询语句中的列与相关属性的对应关系。这里就以简单属性为例进行说明。
<resolver:DataConnector id="mySIS"xsi:type="dc:RelationalDatabase">
<dc:ApplicationManagedConnectionjdbcDriver="oracle.jdbc.driver.OracleDriver" jdbcURL="jdbc:oracle:thin:@222.27.106.22:1521:ORCL "
jdbcUserName="kpdssso"
jdbcPassword="kpdssso" />
<dc:QueryTemplate>
<![CDATA[
SELECT * FROM T_SYS_LOGINPERSONWHERE LOGIN_NAME = '$requestContext.principalName'
]]>
</dc:QueryTemplate>
<dc:Column columnName="LOGIN_NAME"attributeID="loginName" />
<dc:Column columnName="REAL_NAME"attributeID="realName" /> </resolver:DataConnector>
通常,这里的数据源和CAS的数据源应该是一致的。
查询出相关的属性之后,就需要定义属性的解析方式了。这里以上文定义的查询数据为例进行说明:
<resolver:AttributeDefinitionxsi:type="ad:Simple" id="loginName"sourceAttributeID="loginName">
<resolver:Dependency ref="mySIS" />
<resolver:AttributeEncoder xsi:type="enc:SAML1String"name="urn:mace:dir:attribute-def:loginName" />
<resolver:AttributeEncoder xsi:type="enc:SAML2String"name="urn:oid:2.5.4.43d" friendlyName="loginName" />
</resolver:AttributeDefinition>
<resolver:AttributeDefinitionxsi:type="ad:Simple" id="realName"sourceAttributeID="realName">
<resolver:Dependency ref="mySIS" />
<resolver:AttributeEncoder xsi:type="enc:SAML1String"name="urn:mace:dir:attribute-def:realName" />
<resolver:AttributeEncoder xsi:type="enc:SAML2String"name="urn:oid:2.5.4.44" friendlyName="realName" />
</resolver:AttributeDefinition>
这里兼顾了saml1和saml2版本的解析。目前我们采用的是saml2机制,所以,saml解析解析可以省略不写。
这里的name属性必须是唯一的。SP是通过name属性获得用户信息的。
这里,IDP可以向SP发送的用户属性就配置完毕了。