作为服务提供商(SP),我正在尝试使用URL重定向流创建SLO请求。经过大量的文章之后,这就是我想出的:
- 创建注销请求xml并进行数字签名
- 将请求xml转换为base64 url编码的字符串
- 将base64编码的请求xml作为查询字符串附加到SLO url
- 将页面重定向到上面构造的URL(IDP)
- IDP随后将在其末尾对所有SP执行必要的SLO步骤,重定向回我们当前的应用程序(该应用程序启动了SLO请求)
- 解析以上响应并相应地在UI中显示消息
但是,当我进入实际的实现时,我面临以下挑战,其中一些挑战并非特定于SAML SLO。
- 要对注销请求xml进行数字签名,是否必须从
.pfx
文件加载/导入x509证书,或者我可以使用任何来自证书存储区的具有私钥的证书? - 出于演示目的,我已在本地系统中使用具有私钥的证书成功签署了请求。此过程将签名和公共密钥信息附加到注销请求xml中。
- 我已经编码(Base64Url)请求xml,但是结果字符串的长度太长(超过4k个字符),这将超过URL / GET请求中允许的最大长度。我把这一步弄错了吗?
- 文章/ SAML规范均未提及查询字符串的外观。是SAML规范(我可能会错过)定义了querystring参数名称,还是取决于IDP?
总而言之,我觉得SAML规范缺少适当实施的文章,这使得很难掌握它。
注意:到目前为止,我没有写任何代码,因为没有它们我的问题就可以回答。但是,如果需要,我可以包括它们。
许多引用的文章中很少: