基于shibboleth的分布式认证之IDP配置

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发送的用户属性就配置完毕了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值