CARSI常见问题--我是学校(IdP)

提问须知

首先,建议您先搜索本文档,确认要提的问题是否已有答案。提问前请准备好以下信息:

  1. 您的身份(学校CARSI管理员、CARSI用户-学生、CARSI用户-老师、等),您所在的单位(如:北京大学,计算中心,张三)

  2. 您正在做的事情、背景或进展(如:我校的会员单位申请刚刚审批通过,我目前正在部署IdP,参考的是wiki上的“脚本方式安装部署CARSI IdPv4.1.4”的步骤,现在做到了第7步;我校IdP之前已上线,近期打算从3.4.7升级到4.1.4,打算使用新的环境重新安装,并把现有的metadata及证书迁移到新环境,现在做到了第8步)

  3. 出问题的步骤(如:已经配置好了“对接校园网认证系统”,对接的是XX公司的CAS系统,在预上线环境测试时发现输入用户名密码,以及弹出是否同意释放用户属性的提示框都通过了,但是跳转到SP时报错了,错误见截图)。

  4. 做过哪些尝试(如:试过清除浏览器缓存,重新测试问题依旧;看过idp-process.log的日志,但是没有任何ERROR信息;试过使用浏览器的F12看了一下请求的链路,发现了一些奇怪的请求……)。

  5. 发送系统错误截图或者访问过程录屏:需要截图清晰、可看清错误信息,截图包含浏览器url,录屏过程完整。

  6. 其它您分析的可能原因,便于排查问题(如机房昨日断电,所有系统都重启了;上周调整了网络策略……)

 

申请和上线流程

1. 什么是CARSI,能解决什么应用问题?

请见 CARSI基本概念



2. 谁在维护CARSI项目,联系方式?

目前,北京大学计算中心CARSI团队在负责CARSI建设和远程技术支持工作(微信群、QQ群、邮箱),赛尔网络各省分公司提供本地用户服务,赛尔网络市场部负责项目推广。有关CARSI的技术、重要SP拓展等问题,可联系carsi@pku.edu.cn。

几个微信技术交流群和QQ群(eduroam&carsi实名工作群,群号:459109095),汇集了国内几百所学校从事相关工作的老师,实时交流CARSI调试、运维、项目发展问题,欢迎联系当地赛尔公司或发送邮件到 carsi@pku.edu.cn 入群。



3. 我校能否/如何加入CARSI联盟?

 CERNET 会员单位、已经接入教育网的大中小学、各级教育管理部门和科研机构,可直接提交在线申请加入CARSI。https://mgmt.carsi.edu.cn/reg/step1

其它致力于教育科研的单位,欢迎联系我们。CARSI是一个非常开放的联盟,初衷是希望惠及国内各级院校和教育科研机构。欢迎咨询carsi@pku.edu.cn。



4. 应该由学校信息化管理部门(如信息办、规划办或网络中心)还是图书馆申请?

CARSI项目的目标是:基于师生在高校中的真实身份,建设广泛支持各类教学科研资源的共享平台。现阶段提供的资源以图书馆电子资源(如期刊、书籍、数据库等)为主,也包含教育信息化(如在线PDF文档编辑、高性能计算等)、教育教学(如网课、在线培训、创新创业、考研考证等)等各类资源。目前的重点是发展各类教学科研相关资源。因此我们更建议由学校的信息化管理部门来作为申请主体。同时也欢迎学校图书馆、网信办等各个部门申请,具体情况取决于您学校的实际情况,每校仅限一个申请部门。



5. 在线提交会员申请时提示该校已经申请了,可是我们没有申请呀?

有可能是贵校其它部门已经申请过了,您可以先在校内沟通一下,确实无法获得相关信息的,可联系当地赛尔工程师或者使用申请学校邮箱联系carsi@pku.edu.cn 查询具体情况。



6. 在线申请时的域名、盖章等问题

学校名称、学校域名、学校IdP服务的域名(在线申请的页面上有具体的规则提示),在线提交申请后无法修改,因此需要您在提交申请前准备好。

落款尽量盖学校公章。如果校章确难申请,可以盖二级单位公章,要求申请单位名称和公章一致。签名,与公章一致,为公章单位负责人。



7. 我想修改学校名称、域名、IdP域名怎么办?

学校名称、学校域名、学校IdP服务的域名,如需要修改,请使用您会员申请表上的两名联系人之一的邮箱,发邮件给 carsi@pku.edu.cn 提出会员删除申请后,重新提交在线申请。已经邮寄过申请材料的学校,需重新邮寄与新申请匹配的材料。



8. 如何修改学校信息(英文名、申请部门、联系人、LOGO)?

修改方式:

登录CARSI自服务系统 mgmt.carsi.edu.cn,用户名:学校域名,缺省密码:项目负责人手机号。忘记密码的话可以在界面上申请重置。登录后,可在“我的CARSI-基本信息”页面直接修改。

修改学校英文名:

        若学校IdP状态为“调试中”,修改后学校CARSI管理员需重新上传IdP的metadata以使其生效。重新上传metadata后,请访问预上线环境链接 https://www.carsi.edu.cn/carsimetadata/carsifed-metadata-pre.xml 以确认更改生效且可正常运行。

        若学校IdP状态为“已上线”,需先发送邮件到carsi@pku.edu.cn申请将状态撤回到“调试中”,然后在自服务系统中修改英文名称,并重新上传metadata。在预上线环境(“调试中”状态)确认更改生效后,重新向carsi@pku.edu.cn发送上线申请。收到正式上线邮件后,在CARSI线上metadata中再次确认线上环境的更改已生效(有10分钟延迟):https://www.carsi.edu.cn/carsimetadata/carsifed-metadata.xml。完成更改。

修改申请部门/LOGO:

        可以直接在“我的CARSI”页面更改,该修改不会影响到联盟metadata文件。预上线环境和线上环境均可操作。

修改学校联系人:

        可以直接在“我的CARSI”页面更改,该修改会进入到联盟metadata文件,因此更改后还须在对应状态(“调试中”或“已上线”)的联盟metadata文件中确认更改已生效。如“已上线”,该更改无需将学校先退回到“调试中”状态。



确认我校修改是否已同步到eduGAIN:CARSI联盟定期向eduGAIN发送学校IdP信息。通过访问https://technical.edugain.org/entities 确认eduGAIN已经更新了贵校的信息(有延迟,至多24小时)。

 



10. 什么是“预上线环境”、“线上环境“、“试运行状态”和“已上线状态”?SP调试流程是什么?

请参考脚本方式安装部署CARSI IdP具体步骤第9步 “IdP4:预上线环境和线上环境 。



11. CARSI能给我校带来哪些好处?

贵校的CARSI IdP上线后,贵校师生就可以访问CARSI联盟中资源提供商的SP资源了,是否有使用权限需要依学校的采购情况和资源的开放程度决定:

收费资源

对于贵校已采购的资源,在学校资源管理员联系资源提供商开通后(部分资源无需管理员主动联系),师生可通过CARSI渠道在校外登录,无需通过VPN,也无需再与资源提供商对接用户库;对于贵校未采购的资源,多数收费资源对于CARSI成员高校提供一定阶段的免费试用;

免费和试用资源

根据CARSI联盟与资源提供商的协商,有些资源的某个版本供全体CARSI师生提供免费使用(如福昕高级PDF编辑器网页版),有些资源在提出申请后可免费试用一段时间,有些资源提供特殊的试用资源范围和访问次数,为CARSI用户提供优惠服务的政策和力度不一,具体参见如下链接中的“服务开通”列https://www.carsi.edu.cn/splist_zh.htm。可免费使用和试用资源列表(随着新资源上线和老资源策略调整会有变化)参见CERNET联邦认证与资源共享基础设施CARSI-会员单位SP

注意:CARSI联盟本身不直接提供资源,资源均由资源提供商成员提供。



CARSI提供了一个资源门户网站(支持PC Web和移动端访问),建议配置贵校可以使用的资源,将这个链接挂到贵校首页、图书馆、或者信息化部门的网站上,方便学校师生统一检索和访问。

 



 



此外,IdP默认配置会投递一些统计数据给CARSI联盟服务器(https://mgmt.carsi.edu.cn ),您在年终总结的时候也可以直接当做弹药使用,也可以在日常工作中了解并监测学校CARSI服务运行情况。



12. 是否可以在手机、pad访问CARSI资源?如何集成CARSI资源门户到我校的PC/移动/微信公众号/企业微信门户?

请参考脚本方式安装部署CARSI IdP具体步骤第10步。



13. 我校加入CARSI需要做哪些对接工作,我需要给领导预估一下资源(对接人力、服务器、网络等)。

您需要:提交在线申请->寄送盖章签字的申请表->待CARSI北大运行团队审批->部署、配置并在预上线环境测试通过您的IdP->发上线申请并等待CARSI北大运行团队审批->审批通过后我们自动将您的IdP切到CARSI正式环境->贵校向SP资源提供商申请开通贵校服务->最后别忘了在自服务系统中勾选贵校已经采购的资源(用于在我们提供的资源门户上显示贵校可以使用的资源列表,方便贵校师生访问)

详情参见:CARSI联盟加入流程



14. 我是学校管理员,IdP上线之后,我还需要做哪些工作,我校师生才可以访问CARSI资源?IdP上线了,我为什么在资源门户ds.carsi.edu.cn上还看不到已采购资源?

从师生使用的角度看,CARSI目前引入的资源可以分成两类:1、不需要管理员提交开通申请,IdP上线后,师生可以直接使用的资源。2、需要管理员联系服务提供商开通CARSI登录或试用(具体联系方式见https://www.carsi.edu.cn/splist_zh.htm“服务开通”列)。

之后您需要登录自服务系统CARSI会员自服务系统 ,在“可访问资源”列表中勾选并保存贵校可以使用的资源,保存后1小时内在https://ds.carsi.edu.cn 生效。之后贵校师生即可通过CARSI资源门户https://ds.carsi.edu.cn 访问资源了。



15. 在线申请中提到的附件材料在哪里可以查看

申请材料中附件查看地址:https://www.carsi.edu.cn/join_zh.htm



16. 我校已经发送CARSI上线申请,但未收到回复邮件

 如果邮件地址信息有问题,请学校老师登录https://mgmt.carsi.edu.cn,我的CARSI,基本信息,修改邮箱地址。建议使用学校邮箱。



17. 我校想向CARSI推荐一些目前尚未加入CARSI平台、但是实用性强、有价值的高品质资源数据库,例如:XXX数据库可以检索、分析国内外专利数据,怎么推荐?

CARSI项目欢迎IdP已经上线的学校积极推荐优质资源。请资源厂商通过www.carsi.edu.cn在线提交申请,也可以通过carsi@pku.edu.cn联系我们。提交申请前,请资源厂商提前联系好两所推荐学校,并确认至少有5所高校(不一定是CARSI成员高校)已采购并正在使用该公司产品。



18. 学校按照CARSI官网https://www.carsi.edu.cn/splist_zh.htm中的sp服务开通,给sp提交申请时,有些sp厂商需要学校提供IdP URL(Identity Provider URL),如同方知网,IdP URL(Identity Provider URL)填什么?

就是IdP EntityID,也可在CARSI官网IdP清单(https://www.carsi.edu.cn/IdPlist_zh.htm)中查看所在学校IdP URL。

 

19. 我校已加入eduGAIN, 为何访问eduGAIN SP会员网站时,IdP服务器报 ”Unsupported Request: “ 错误?

当浏览eduGAIN SP会员网站时,可以看到国内高校帐户登录界面,但当登录请求被转发到国内学校IdP服务器时,IdP服务器报”Unsupported Request: “ 错误。

原因:CARSI会员IdP仅对已加入CARSI联盟的SP会员提供认证服务,当被访问的eduGAIN SP服务不是CARSI会员时,就会报上述错误。

问题解决方法:

1. 该SP提交申请加入CARSI联盟,或

2. 学校IdP添加该SP为CARSI联盟之外的本地信任SP。注意学校需要自行审核该SP的资质和内容,并将其metadata加入学校IdP metadata配置文件。

20.如何查询本人所在的单位是否加入了eduGAIN ?

打开https://technical.edugain.org/entities 网站,在“Entity filter”输入单位的域名,点击“Show”查询。例如Entity filter的下方搜索框输入:“北京大学”,然后点击“Show” 可以查询到示例单位“北京大学”已经加入eduGAIN。



21.我校已提交在线注册申请的全部信息,现在“全资格会员”中的信息有所变更(如更换学校LOGO或者联系方式),但是申请表已经打印出来了,系统不让我登录,告诉我已经申请,想问如何修改?

需要给carsi@pku.edu.cn发邮件,申请删除会员信息,CARSI管理员删除学校全部的会员信息后方可重新在线注册。

22.我在系统里修改完学校英文名称后,需要重新上传metadata文件,这个文件需要我手动更改相关信息吗?如何上传metadata?

不需要手动更改metadata文件,重新上传metadata之后,系统会自动将新英文名称拼接到发布出去的metadata文件中。上传metadata,请参考wiki.carsi.edu.cn,“预上线环境准备Metadata”:IdP4:预上线环境准备Metadata数据

23.我校是CARSI的全资格会员,如果想使用CARSI资源,是否需要提交申请,线下对接统一身份认证平台?

不需要向CARSI提交申请。全资格会员在CARSI上线时,北大已经检查过IdP是否符合标准,技术上已完成资源对接。学校CARSI管理员老师可以根据https://http://www.carsi.edu.cn 上的资源开通指南文档联系资源服务商开通使用。

24.我们学校加入CARSI后,除了能访问资源,还有其他附加功能吗?

1)可通过CARSI联盟提供的自服务系统和其他统一运维方式,获知本校IdP服务运行情况、了解运行数据、管理服务运行。

2)高校师生可通过CARSI资源门户https://ds.carsi.edu.cn/一站式访问学术资源,免费使用CARSI资源门户的资源收藏、关键词检索等功能,可免费、采用折扣价使用或试用更多的教学科研资源,资源访问更便捷。

3)可参与微信群和QQ群的社群交流,一对一解答学校关于CARSI的各类问题。

25.CARSI管理员忘记自服务系统登陆密码怎么办?

登录自服务系统:https://mgmt.carsi.edu.cn/,点击重置密码,系统会给学校预留的两个邮箱发送密码重置邮件。管理员可以根据邮件的提示重新设置账户密码。具体如下图:



IdP技术对接及运行问题:

1. 在我校部署CARSI前,想提前了解下需要具备哪些部署条件,如:硬件如服务器、软件、网络需要什么配置(条件)。

请参考脚本方式安装部署CARSI IdP具体步骤第1步。

关于端口:

对于IdP所在的虚机直连外网的情况,IdP工作时只需要监听443端口,因此对外仅需暴露该端口。如果您使用Let's Encrypt等免费的https证书,在申请证书时可能需要80端口用来验证您对于该域名的所有权,具体请询问Let's Encrypt,如果不存在证书申请、更新的问题,那么IdP仅需打开443端口。

对于IdP前面还有反向代理的情况,情况与上面的类似,总之IdP运行对外仅需开通443端口。但是此时请注意,CARSI IdP采用的是Shibboleth中间件,缺省只支持https方式的SAML2.0,所以如果贵校打算在反向代理层剥离https证书,反向代理(比如nginx)与IdP(upstream)之间通过80端口http协议沟通的话,会出现不符合Shibboleth IdP安全要求的问题。可参考,设置反向代理将X-Forwarded-Proto也传给upstream。

关于IdPv414的端口配置说明:

联盟推荐的IdPv414安装部署脚本会默认开放80和443端口,并通过Nginx配置了HSTS功能强制用户访问跳转https访问。



2. 修改了本机的hostname,安装过程中还是提示localhost.localdomain?

首先确认本机hostname已经改成了域名。如果没有,请按照下述步骤进行修改,修改完成后重启服务器。

[root@www ~]# hostnamectl set-hostname idp.xxx.xxx.xxx 

或者,也可以在安装过程中输入主机域名idp.xxx.xxx.xxx。

Installation Directory: [/opt/shibboleth-idp]
Hostname: [localhost.localdomain] #直接输入主机域名



3. idp安装运行关键log文件包括哪些?

请参考脚本方式安装部署CARSI IdP步骤第6步具体内容。



4. IdP主要配置文件包括哪些?

/opt/shibboleth-idp/conf/attribute-resolver.xml,与本地认证对接用户属性相关配置文件 

/opt/shibboleth-idp/conf/attribute-filter.xml,向SP释放属性相关配置文件

/opt/shibboleth-idp/conf/metadata-providers.xml,配置联盟metadata来源

/opt/shibboleth-idp/conf/idp.properties,配置IdP运行全局参数

/opt/shibboleth-idp/conf/ldap.properties,对接ldap认证配置文件,其他认证无需配置此文件



IdPv414部分配置文件说明:

/opt/shibboleth-idp/conf/authn/authn.properties : CAS、Oauth2、企业微信、微校等认证方式下外部认证服务器信息配置文件

/opt/shibboleth-idp/credentials/secrets.properties : salt值、Ldap密码及idp.sealer密码保存文件



5. 如何查看IdP(Shibboleth)版本?

/opt/shibboleth-idp/bin/version.sh



6. IdP运行过程中出现故障怎么办?

查看日志/opt/shibboleth-idp/logs/idp-process.log。

排查错误信息的时候,需要找到IdP启动后的第一个ERROR。

IdP启动的日志的第一行往往是类似

2020-02-06 11:49:45,190 - - INFO [net.shibboleth.idp.log.LogbackLoggingService:240] - Shibboleth IdP Version 3.4.3

从此行往后的就是第一个ERROR,后面ERROR通常是由第一个ERROR引起。

请先分析一下错误,主要要找到对应出错事件的错误日志。对于复杂问题可能需要按照下一个问题的方法一所述,调整日志级别到DEBUG(通常idp.loglevel.idp调为DEBUG就可以了),再重现问题并查看日志。



7. 如何检查从校园网认证系统取回用户属性是否正常?

方法一(推荐):修改/opt/shibboleth-idp/conf/logback.xml日志级别

<!-- Logging level shortcuts. -->
<variable name="idp.loglevel.idp" value="${idp.loglevel.idp:-INFO}" />      <!-- idp运行日志级别 -->
<variable name="idp.loglevel.ldap" value="${idp.loglevel.ldap:-WARN}" />     <!-- LDAP相关日志级别 -->
<variable name="idp.loglevel.messages" value="${idp.loglevel.messages:-INFO}" />     <!-- 追踪协议数据日志级别 -->
<variable name="idp.loglevel.encryption" value="${idp.loglevel.encryption:-INFO}" />     <!-- 数据加密追踪日志级别 -->
<variable name="idp.loglevel.opensaml" value="${idp.loglevel.opensaml:-INFO}" />     <!-- OpenSAML日志级别 -->
<variable name="idp.loglevel.props" value="${idp.loglevel.props:-INFO}" />     <!-- 性能分析日志级别 -->
<variable name="idp.loglevel.httpclient" value="${idp.loglevel.httpclient:-INFO}" />     <!-- httpclient运行日志级别 -->
 
<!-- Don't turn these up unless you want a *lot* of noise. -->
<variable name="idp.loglevel.spring" value="${idp.loglevel.spring:-ERROR}" />     <!-- Spring框架日志级别(数据量特别大) -->
<variable name="idp.loglevel.container" value="${idp.loglevel.container:-ERROR}" />     <!-- Tomcat/jetty日志级别(数据量特别大) -->
<variable name="idp.loglevel.xmlsec" value="${idp.loglevel.xmlsec:-INFO}" />     <!-- XML签名或加密日志级别 -->

可以根据需要修改相应参数。测试完成之后,务必将日志级别恢复默认,否则日志量太大,容易造成硬盘空间不足。

一般将idp.loglevel.idp和idp.loglevel.messages中的INFO改成DEBUG就可以看到用户属性情况了。

修改后还须执行/opt/shibboleth-idp/bin/build.sh重新构建一下IdP,然后重启jetty使其生效。


方法二:如果正好需要用script映射该属性,则可以直接在script中加logger,会以INFO级别打印到日志中,比如:

<Script><![CDATA[
logger = Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute");
logger.info("Value of employeeType is : {}", employeeType.getValues().get(0));
var localpart = "";
if(employeetype.getValues().get(0)=="staf") localpart = "staff";
else if(employeetype.getValues().get(0)=="std") localpart = "student";
else localpart = "other";
eduPersonScopedAffiliation.addValue(localpart + "@%{idp.scope}");
    ]]></Script>

日志中会打印:

2020-02-08 15:15:30,293 - 222.29.104.246 - INFO [net.shibboleth.idp.attribute:2] - Value of employeetype is : faculty

另外,在调试过程中,有时候需要打开插件的DEBUG模式,在logback.xml 中加入下面语句,可以打开插件的debug信息,进行错误分析调试,注意,不同的插件使用不同的语句,另外,测试完成后,需要去掉,或者注释掉这些语句。

修改后还须执行/opt/shibboleth-idp/bin/build.sh重新构建一下IdP,然后重启jetty使其生效。

<!-- CAS -->
<logger name="net.unicon.idp.externalauth" level="DEBUG" />
<logger name="org.jasig.cas.client.validation" level="DEBUG" /> (IdP5版本之前的用这句)

<logger name="org.apereo.cas.client.validation" level="DEBUG" /> (IdP5.1.2版本用这句)

<!-- 其它插件(OAuth/企业微信/腾讯微校):-->
<logger name="cn.edu.carsi.idp.externalauth" level="DEBUG" />

8. 修改配置后,如何重启IdP以及如何测试?

修改任意xml配置文件后,需要重启jetty(systemctl restart jetty)使配置生效。

如果修改了jar包,则需要进入/opt/shibboleth-idp/bin,执行./build.sh,然后重启jetty。

重启jetty后,请重新打开无痕窗口进行测试,原先如果已经打开无痕窗口,需先关闭。



9. 配置了日志采集后,为什么在自服务系统https://mgmt.carsi.edu.cn中看不到数据?

一般配置日志采集后,需要等2个小时左右,才能在系统中查看到访问的情况。

如果时间超过两个小时仍无数据,请参考IdP4:检查日志功能是否正常 检查日志功能是否正常。



10. SP厂商报某个用户出现了异常访问(比如下载了大量的数据),如何定位到具体的用户?

根据https://www.carsi.edu.cn/docs/attribute_profile_zh.pdf,我们建议将pairwise-id(4.1.4新加)或eduPersonTargetedID作为用户唯一永久id向所有CARSI SP释放。这两个属性对应同一个IdP内部属性:persistentId(后续描述时统一使用persistentId)。自IdP 3.4.7安装脚本开始,默认安装Mariadb数据库(MySQL),存放persistentId与用户校园真实id(如学工号)的映射关系。管理员可在Mariadb中查看。表格式参见:请参考脚本方式安装部署CARSI IdP具体步骤第4步。通过数据库永久保留CARSI对外释放用户id和校园真实id对应关系,具有如下几点优势:

  • 释放persistentId,可为SP提供精细化、面向个人的服务提供用户唯一标识,同时不泄露用户个人隐私信息;

  • 符合至少保留最近180天运行日志的安全运行要求;

  • 便于出现恶意使用后及时进行用户定位;

  • 将每次访问时自动生成persistentId替换成第一次访问时自动生成并存库、以后从库中读取的方式,运行效率高。

IdP3.4.3提供的可在访问时动态生成persistentId的方式建议修改成通过Mariadb存放。



11. LDAP 不是很明白如何配置?

ldap 配置时, 主要是以下这些参数,请重点关注。

  1. idp.authn.LDAP.authenticator = bindSearchAuthenticator :  认证的模式选 bindSearchAuthenticator,除非明确了解另外几个模式的含义,否则都应该配置这个

  2. idp.authn.LDAP.baseDN : 开始 ldap 查询的 basedn,向 ldap 管理员索取

  3. idp.authn.LDAP.bindD 和 idp.authn.LDAP.bindDNCredential : 一个有搜索权限的 ldap 账号,向 ldap 管理员索取

  4. idp.authn.LDAP.subtreeSearch = true :  除非所有的用户都只落在 basedn 上,否则必须开启子树的查询,不然递归不下去

  5. idp.authn.LDAP.userFilter = (uid={user}) : 用户输入的用户名,对应在 ldap 里的属性,查询时根据这个属性去查。通常 ldap 里应该是 uid 或者 cn,ad 里则是 sAMAccountName

  6. idp.attribute.resolver.LDAP.searchFilter : 同上

具体配置参见:请参考脚本方式安装部署CARSI IdP具体步骤之对接LDAP服务器。



12. IdP报不支持的请求错误:Unsupported Request: The application you have accessed is not registered for use with this service.

该错误一般是由于IdP无法识别正在访问的SP,本地IdP没有下载CARSI联盟的metadata文件导致的。CARSI联盟提供了测试环境(预上线环境)和正式环境(线上环境)共2种环境的联盟metadata,联盟metadata其中包含了当前环境中所有可供使用的SP的metadata信息,IdP只能为当前环境的SP提供认证服务,如果用户要访问的SP的metadata不在学校IdP服务器中联盟metadata文件中则会出现这样的错误。此问题可能有以下几种情况:

如果是在预上线环境:联盟的测试环境metadata地址为https://www.carsi.edu.cn/carsimetadata/carsifed-metadata-pre.xml,先确认其中是否已经包含了贵校IdP的信息(搜索贵校EntityID),没有的话先通过自服务系统上传(请参考脚本方式安装部署CARSI IdP具体步骤第9步)。再确认/opt/shibboleth-idp/conf/metadata-providers.xml中MetadataProvider的metadataURL是否正确地指向了这个地址。最后再确认一下访问的是否为测试SP(dspre.carsi.edu.cn

如果是在刚上线以后:联盟的线上环境metadata地址为https://www.carsi.edu.cn/carsimetadata/carsifed-metadata.xml,收到上线成功的邮件后,先确认其中是否已经包含了贵校IdP的信息(收到邮件后5分钟左右该文件会更新,搜索贵校EntityID)。再确认《脚本方式安装部署CARSI IdP具体步骤第10步》中的步骤已经执行了(/opt/shibboleth-idp/conf/metadata-providers.xml中MetadataProvider的metadataURL是否正确地指向了这个地址)。最后再确认一下访问的是否为线上SP(可以在联盟线上metadata中搜索该SP的EntityID,或者在联盟已上线SP列表中查看是否有这个SP https://www.carsi.edu.cn/splist_zh.htm

网络问题(通常是28天左右突然出现该错误):确认是否已将联盟的metadata文件下载到了/opt/shibboleth-idp/metadata目录。可能由于网络等原因,贵校IdP无法下载联盟的metadata文件导致的,如果学校禁止服务器访问外网则会导致服务器更新metadata文件失败,需要开放服务器访问外网的权限,或至少允许服务器访问https://www.carsi.edu.cn网站。此时可以手工下载一下该文件,然后重启IdP试试。

为什么是28天左右容易出问题?https://www.carsi.edu.cn/carsimetadata/carsifed-metadata.xml为例,头部有一个validUntil字段,代表该联盟metadata的失效时间,按照eduGAIN的要求不能超过30天,CARSI的策略是每次生成该文件更新这个有效期到28天以后。贵校如果有一段时间IdP运行是好的,过了28天左右出了问题,很有可能就是贵校拿到的CARSI联盟的metadata已经过期失效了。网络问题可能是在这28天中的任何时间发生的,但是IdP还是运行了一段时间(注意这段时间新添加到CARSI联盟中的SP其实贵校是认不到的)。



13. IdP报签名验证失败:Message was signed, but signature could not be verified.

关键信息:认证成功了(输入用户名密码,以及弹出是否同意释放用户属性的提示框都通过了),但是返回到SP时报错了:message was signed, but signature could not be verified.

原理说明:IdP返回给SP的用户属性等信息(SAML Response),是需要进行加密和签名的,IdP使用自己的私钥签名,SP使用对应的公钥验证签名。IdP的私钥永远只保留在贵校IdP侧,公钥是通过IdP的metadata发布到CARSI联盟的(详见上一个问题中联盟metadata)。联盟中的SP使用联盟metadata获取贵校IdP的metadata,从中拿到验证签名的公钥(其实本质上是个证书,证书中包含公钥)。这个错误说明,SP使用联盟中贵校用于验证签名的公钥,验证贵校返回的消息时出错了。因此很有可能是您本地使用的公私钥对发生变化了,比如您重新安装了IdP(相关的公私钥是在安装时自动生成的)但是却没有及时更新联盟中贵校IdP的Metadata。

解决:如果您备份了之前的公私钥(参考IdP4:备份恢复及高可用方案 中的“1. metadata证书文件备份(重要,必做)”),可以恢复回来试试。如果您确实需要更新,对于调试中的IdP可以自行在自服务系统中更新metadata,对于已上线IdP请联系我们先下线再更新。



14. 在自服务系统中上传metadata失败

metadata上传失败,提示:元数据文件中的Entity ID与IdP URL不符。

检查上传的metadata文件中,EntityID与自服务系统中“我的基本信息”页面中的IdP域名是否一致。



15.IdP报过期的请求错误:Stale Request

这种错误的出现可能是由于点击浏览器回退按钮引起的,关闭并再次打开浏览器无痕窗口重新验证即可。如果不是浏览器操作引发的问题,可能是由于IdP服务器时间与标准时间误差过大引起的,请检查IdP服务器系统时间和NTP服务都是否正常。



16. 现在还提供OVA镜像吗?

目前只提供脚本安装方式。



17. 如果IdP运行过程metadata数据有变化,如何重新上传metadata?

IdP安装配置完成后,可对/opt/shibboleth-idp安装目录进行打包备份,以备以后恢复及重新安装配置参考。

如果IdP运行中metadata数据丢失,重新安装和配置IdP,metadata数据会有变化。新安装IdP正式提供服务前,需登录https://mgmt.carsi.edu.cn重新上传metadata。

  • 如果IdP在预上线环境(调试中),参考WIKI步骤:IdP4:预上线环境准备Metadata   重新上传metadata即可。

  • 如果IdP在线上环境(正式运行后)发生这种情况,需要给carsi@carsi.edu.cn 发邮件,申请先将IdP下线到预上线环境,上传新metadata后,重新上线。


18. IdP默认用户多长时间不使用的话,就会退出,需要再次登录呢?这个是在哪里可以设置时间?

A: 用户使用IdP服务器进行一次成功的认证后,系统会为用户创建session,此session默认timeout时间为60分钟,如需修改此配置涉及以下配置文件和参数:

配置文件:/opt/shibboleth/conf/idp.properties

#idp.session.timeout = PT60M

除session设置外,用户验证结果有效时间设置涉及以下配置文件和参数:

/opt/shibboleth/conf/authn.properties:

#idp.authn.defaultLifetime = PT1H
#idp.authn.defaultTimeout = PT30M

配置举例:

# 认证结果保留最长时间24小时

   idp.authn.defaultLifetime=PT24H 

# 认证结果空闲保留时间60分钟

idp.authn.defaultTimeout=PT60M



19. IdP升级到414后,某些SP无法正常访问,如何解决?

IdP414默认使用GCM方法进行idp和sp之间的传输加密,与老版本CBC方法相比,安全性更高。某些SP因为版本原因不支持GCM会导致IdP14用户访问异常。

解决办法:

  1. 升级SP支持GCM加密方式。此方法为最佳方法,推荐采用。

  2. SP升级自己的metadata数据,在metadata数据中指定目前可支持的加密方式。IdP可在通信过程中,根据SP的此项设置,自动适配。

IdP端临时解决办法:

  1. 登录idp414服务器

  2. 编辑conf/metadata-providers.xml配置文件,增加<MetadataFilter>,单独配置某SP的加密方法为CBC,(复制下面红色部分配置信息,注意修改SP entity ID):

    <MetadataProvider id="HTTPMetadata"
         xsi:type="FileBackedHTTPMetadataProvider"
         backingFile="/opt/shibboleth-idp/metadata/carsifed-metadata.xml"
         minRefreshDelay="PT5M"
         maxRefreshDelay="PT10M"
         metadataURL="https://www.carsi.edu.cn/carsimetadata/carsifed-metadata.xml">
        <MetadataFilter xsi:type="SignatureValidation" certificateFile="/opt/shibboleth-idp/credentials/dsmeta.pem" />
        <MetadataFilter xsi:type="EntityRoleWhiteList">
            <RetainedRole>md:SPSSODescriptor</RetainedRole>
        </MetadataFilter>

        <MetadataFilter xsi:type="Algorithm">
                <!-- CBC-only SPs. -->
                <md:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" />
               <Entity><https://sp entity id1</Entity>
<Entity><https://sp entity id2</Entity>
        </MetadataFilter>

   </MetadataProvider>

20. IdP安装配置时,预上线环境测试显示登陆成功,但释放属性部分显示为空,这个一般是什么原因?

解决方法:

查idp-process.log,找关键字ERROR,后面会跟着错误原因。

通常有两种情况,

1. Mysql数据库不可用,查mysql是否正常启动、库表是否正确创建、用户名及密码配置文件是否正确等;

2. attribute-resolver.xml文件配置错误,根据上面问题7. 如何检查从校园网认证系统取回用户属性是否正常介绍的步骤排查是否从认证源拿到相关属性。

2.1 如果认证源为ldap的话,咨询ldap管理员ldap释放了哪几个属性,挑一个替代employeeType配置到attribute-resolver.xml文件中,看看是否有变化。

21.我们学校原来CARSI的服务器故障了,然后重新部署了最新的,部署完之后,发现不能正常使用,请问这个怎么解决呢?需要更新metadata文件吗?

情况一:如果IdP服务器发生故障、重新安装之前,进行过备份,请参照wiki文档恢复配置: IdP4:IdP服务器备份恢复及高可用方案

情况二:如果学校备份不可用,或者备份丢失,请重装IdP,IdP应用安装完成后,与CARSI联盟联系(邮件地址carsi@pku.edu.cn),走下线、上线流程并重新上传metadata。

22. IdP服务器使用CAS认证源,认证成功后,跳转到ds.carsi.edu.cn网页时报错 “opensaml::FatalProfileException at (https://xxx.xxx.edu.cn/Shibboleth.sso/SAML2/POST)”

具体错误信息:

opensaml::FatalProfileException

The system encountered an error at Fri Jul 15 11:17:24 2022

To report this problem, please contact the site administrator at root@localhost.

Please include the following message in any email:

opensaml::FatalProfileException at (https://xxx.xxx.edu.cn/Shibboleth.sso/SAML2/POST)

SAML response reported an IdP error.

Error from identity provider:

Status: urn:oasis:names:tc:SAML:2.0:status:Requester
Sub-Status: urn:oasis:names:tc:SAML:2.0:status:AuthnFailed
Message: An error occurred.

问题分析:

  1. 查看idp-process.log, 检查是否有以下错误:
    2022-07-15 11:31:29,165 - 192.168.xx.xxx - ERROR [org.jasig.cas.client.util.CommonUtils:439] - SSL error getting response from host: cas-pass.XXXX.edu.cn : Error Message: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    javax.net.ssl.SSLException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
    Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at java.base/sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:102)
    Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at java.base/java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)
    2022-07-15 11:31:29,166 - 192.168.70.235 - ERROR [net.unicon.idp.externalauth.ShibcasAuthServlet:111] - Ticket validation failed, returning InvalidTicket
    java.lang.RuntimeException: javax.net.ssl.SSLException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:440)

  2. 如果有以上错误,请检查CAS认证服务网站数字证书,通常因其证书不完善导致报错。

解决办法:

请学校认证服务器更新完善数字证书。

注:www.myssl.com提供免费网站数字证书检测服务。

 

23. IdP上线运行后,如何检查IdP服务器的运行状态是否正常?

除需要操作系统运行正常外,IdP的运行依赖于Nginx、Jetty以及IdP软件自身的正常运行,检查步骤如下:

  1. 使用systemctl status nginx命令检查Nginx状态是否正常,如果输出如下图所示 active (running),则nginx运行正常。

     

  2. 使用systemctl status jetty命令检查Jetty状态是否正常,如果输出如下图所示 active (running),则Jetty运行正常。

  3. 使用浏览器打开https://XXX.XXX.edu.cn/idp/shibboleth ,注意使用学校IdP服务器域名替代XXX.XXX.edu.cn,如果能够看到本校IdP服务器的metadata文件,则IdP服务器运行状态正常。

 

24. 当访问ds.carsi.edu.cn,选择认证学校时,我校名称右边显示红色或黄色的三角形提醒符号标记,是什么原因?

CARSI联盟上线了学校IdP服务器运行状态监测软件,会每隔1小时监测一次学校IdP服务器运行状态,监测方式是通过curl方式查看学校IdP服务器metadata文件,如果学校IdP服务器网络链接状态不正常或不能正常查看metadata文件,则在认证学校选择列表中会用红色或黄色三角提醒符号标识。监测软件每小时运行一次,当学校IdP服务器运行恢复正常后,1小时内提示现象就会消失。详细情况,可以查看Idp服务监测的说明

25. 关于IdP证书异常

1、如果是https证书异常:证书不是商业证书,或者证书过期,浏览器如下图提示:

请为IdP购买并配置正确的https证书,配置好以后请使用在线工具检查一下证书,如:https://www.ssllabs.com/ssltest/index.html

 

2、如果是IdP用于加密或签名的证书被报异常(通常该错误出现在SP网站上):

首先从提交给CARSI联盟的IdP metadata文件中获取到对应的证书字符串(<ds:X509Certificate>),默认安装的Shibboleth IdP会有3种证书(2个用于backchannel/frontchannel的签名,1个用于加密)。然后将其格式化为openssl可以识别的格式(即带前后-----BEGIN CERTIFICATE----- 和-----END CERTIFICATE----- headers的格式,可以使用在线工具如X.509 Certificate Format Online Tool | SAMLTool.com 完成这一步格式化的工作),将结果存为证书crt文件。

然后使用openssl查看该证书的信息(如issuer、过期时间等信息):openssl x509 -in signing.frontchannel.crt -text -noout 确认一下证书的信息中有无异常项(如证书已经过期了),如果未发现问题,请联系报错的SP确认一下具体的错误。

例:某学校报在访问某SP资源时,认证通过后,在其网站上提示下图中的警告信息,点击“continue”后还是可以正常访问的:

 

经查上述方法可以查看到该校IdP的证书是正常的:

建议学校与SP了解一下问题的详细情况,然后再确认解决方案。

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