Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel7

...

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

  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,能解决什么应用问题?

...

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服务器。

...

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

解决办法:

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

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

IdP端临时解决办法:

  1. 登录idp414服务器

  2. 编辑conf/metadata-providers.xml配置文件,增加<MetadataFilter>,单独配置某SP的加密方法为CDC,(复制下面红色部分配置信息,注意修改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安装配置时,预上线环境测试显示登陆成功,但释放属性部分显示为空,这个一般是什么原因?

...

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提供免费网站数字证书检测服务。

...

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

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

    Image Modified

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

    Image Modified
  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小时内这虚标现象就会消失。

25. 关于IdP证书异常

如果是https证书异常:

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

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

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

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

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

Image Added

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

...

建议学校与SP谅解一下问题的详情况。