配置eduPersonEntitlement属性支持访问指定SP

        IdP和SP之间属性传递是CARSI联盟区分用户身份认证方和用户身份使用方、在应用系统资源中实现基于用户的访问控制的技术基础。在IdP端,需要“属性定义””属性释放”两个步骤。

        “属性定义”遵循标准的属性命名,将本地身份认证系统的属性名称和IdP即将释放给联盟SP的属性名称进行关联,为“属性释放”的准备阶段。“属性定义”的属性,可以选择允许或者不允许属性释放。

        “属性释放”是将已经定义好的属性释放给联盟SP的过程。IdP管理员可以配置将某个属性释放给所有SP或者某个SP。

       eduPersonEntitlement(ePE):推荐属性,标识用户访问特定资源的权限的URI。表示用户有权限访问此资源。取值urn:mace:dir:entitlement:common-lib-terms表示遵守idp和图书馆类sp已经达成的线下协议,idp用户去访问sp资源。建议将此属性释放给指定SP。


        Elsevier SP要求CARSI IdP支持eduPersonEntitlement,取标准值urn:mace:dir:entitlement:common-lib-terms。释放该属性意味着:学校承诺,通过CARSI方式访问Elsevier数据库,遵守和他们签署的线下协议。该属性建议配置为单独释放给Elsevier,而不是所有接入CARSI的SP。具体配置方法如下:

配置属性定义

        打开/opt/shibboleth-idp/conf/attribute-resolver.xml文件。在配置文件中新增eduPersonEntitlement属性定义,如果文件中已经配置了eduPersonEntitlement,确认配置是否一致。

	<AttributeDefinition id="eduPersonEntitlement" xsi:type="Simple">
   		<InputDataConnector ref="staticAttributes" attributeNames="eduPersonEntitlement" />
    	<AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonEntitlement" encodeType="false"/>
    	<AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" encodeType="false"/>
	</AttributeDefinition>

	<DataConnector id="staticAttributes" xsi:type="Static">
    	<Attribute id="eduPersonEntitlement">
        	<Value>urn:mace:dir:entitlement:common-lib-terms</Value>
    	</Attribute>
	</DataConnector>

配置属性释放

        打开/opt/shibboleth-idp/conf/attribute-filter.xml文件。eduPersonEntitlement只对Elsevier数据库商释放,需要单独为eduPersonEntitlement配置释放策略,新增释放策略如下,如果文件中已经配置了释放策略,确认配置是否一致。

     <AttributeFilterPolicy id="carsiAttrFilterToSPPolicy">
         <PolicyRequirementRule xsi:type="OR">
             <Rule xsi:type="Requester" value="https://sptest.pku.edu.cn/shibboleth" />
             <Rule xsi:type="Requester" value="https://dspre.carsi.edu.cn/shibboleth" />
             <Rule xsi:type="Requester" value="https://ds.carsi.edu.cn/shibboleth-sp/carsifed" />
             <Rule xsi:type="Requester" value="https://sdauth.sciencedirect.com/" />
         </PolicyRequirementRule>
         <AttributeRule attributeID="eduPersonEntitlement" permitAny="true" />
     </AttributeFilterPolicy>

重启IdP

[root@www ~]#systemctl restart tomcat

检查属性配置是否成功

        预上线环境,浏览器访问https://sptest.pku.edu.cn/secure,登录成功后,访问https://sptest.pku.edu.cn/Shibboleth.sso/Session。

        线上环境,浏览器访问https://ds.carsi.edu.cn,登录成功后,访问https://ds.carsi.edu.cn/Shibboleth.sso/Session。可以看到"entitlement: 1 value(s)“。出于安全考虑,线上环境未配置明文获取,因此看不到具体的取值。

Miscellaneous
Session Expiration (barring inactivity): 479 minute(s)
Client Address: 2001:da8:201:1126:9dd3:6a5d:4a29:be24
SSO Protocol: urn:oasis:names:tc:SAML:2.0:protocol
Identity Provider: https://idp.pku.edu.cn/idp/shibboleth
Authentication Time: 2019-09-20T09:41:32.563Z
Authentication Context Class: urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
Authentication Context Decl: (none)

Attributes
affiliation: 1 value(s)
entitlement: 1 value(s)
persistent-id: 1 value(s)

版权所有©北京大学计算中心