配置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)
版权所有©北京大学计算中心