Shibboleth IdP4 升级指南
背景
Shibboleth 的上一个大版本 IdP3 自 2020 年 12 月 31 日以后,就算结束生命周期停止维护了。新的 IdP4 也已经发布,目前最新的版本是 4.0.1
和当初 IdP2 升级 IdP3 相比,这次的大版本升级平滑许多了,配置文件也基本保持了上一个版本的风格。如果你的 IdP3 所用的 Java 环境已经是 11 的话,他甚至可以直接覆盖升级,他会自动兼容旧版的配置文件。但是如果是全新安装的 IdP4,则需要手动去重新做配置工作。老的配置文件直接覆盖会出现问题。
大体上,IdP4 相比 IdP3 的变化主要有:
Java 最低版本要求从 8 提高到 11
现在默认开启了单点注销的功能
属性定义抽象了出来,配置文件更简洁了
更多的属性获取方式,例如 HTTP 接口获取数据
更详细的可以参考我们汉化整理的 ReleaseNote
升级指南
简单来说,如果现在的 IdP3 已经是 Java11 了,并且又没啥时间操心这东西。那下载新的安装包原地覆盖升级即可。Shibboleth 的安装程序会自动解决配置兼容的问题。
但是如果你的 IdP3 现在是 Java8 的环境,或者你有一定的时间来折腾一下这个玩意。那我们强烈建议新装一台 IdP4,使用新的官方建议的配置风格进行配置。通过本地 Host 域名解析的方式,可以在完全不影响现网生产环境的情况下完成测试验证,实现无感知的 IdP 升级。
前通道和后通道
跨校认证(上海教育认证)是一种认证的漫游,无线网络(eduroam)的漫游似乎也是一种认证的漫游。但是这两种模式的架构却是截然不同的。他们的区别在于数据交互的通道。
对于 eduroam 这样的无线漫游而言,他是一种典型的 Backend Channel
,也就是后通道的模式。
如下图所示,Radius 的报文通过树状层次组织的服务器,层层的转发直至完成漫游。在这里认证的数据主要是直接在服务器之间转发的,服务器之间必须确保网络通讯是畅通的。所以这是后通道
但是对于跨校认证而言,他的所有数据实际上都是通过用户,或者更准确的说是浏览器来进行交互的。如图所示
一个跨校认证的流程简化来描述,大概是这样
用户(浏览器)请求 SP
用户(浏览器)被重定向至 (E)DS 选择 IdP
用户(浏览器)跳转到 IdP 上认证
用户(浏览器)被重定向回 SP,访问资源
可以看到其实所有的交互都是通过浏览器发起的,服务器之间并没有通讯,服务器之间甚至不需要保障网络互通,只要他们到用户(浏览器)通就可以了。所以这是前通道
既然前通道的模式,只需要服务器和浏览器之间可以通讯即可。那么我们就可以构建出与生成环境完全一致的本地测试服务器,并且可以与生成环境共存。只需要通过修改本地域名解析等方式,就可以在完全不影响生产环境的情况下完成对测试服务器的测试。直至测试完成切换上线,期间生产服务器始终可以正常对外提供服务。
因此采用这个方案,IdP 的升级就完全不存在时间窗口,我们完全可以很悠闲的慢慢配置新的 IdP 服务器,慢慢完成测试,最后切换上线。
升级关注重点
上海教育认证中心已经推出了详细的 IdP4 升级指南,可依据指南逐步操作完成升级。这里列了几条个人觉得比较重要的地方,供大家参考。
LDAP 认证部分,密码部分迁移到了
/opt/shibboleth-idp/credentials/secrets.properties
。注意不要漏了,否则肯定配不通。建议参照属性定义部分的文档,统一定义属性,这样后面的属性获取的配置里会简洁很多
迁移证书时,注意证书的密码要前后一致
建议开启单点注销并重新提交 Metadata 给联盟,这个过程不会影响业务的。
建议上海的用户参考 属性释放配置,通过同步的方式自动更新属性释放的策略,从而在不产生运维负担的前提下,保障属性释放的安全可控。
eptID 注意加密的盐和编码的算法要前后一致。建议配置数据库来存储映射关系满足溯源的需求。
原先使用 httpd + ajp 方式代理发布的 IdP,建议参照文档升级至 nginx + http 代理,性能更好且更容易维护
建议上海的用户参考单点注销,增加非 SAML 模式的单点注销功能,为有注销后回调跳转的应用提供一个更好的注销选择
参考文档
以上
版权声明: 本文为 InfoQ 作者【冯骐】的原创文章。
原文链接:【http://xie.infoq.cn/article/16b62ee91e179ecdbd56d3069】。
本文遵守【CC BY-SA】协议,转载请保留原文出处及本版权声明。
评论