首页 > 解决方案 > 创建 SAML SLO 请求

问题描述

作为服务提供商 (SP),我正在尝试使用 URL 重定向流创建 SLO 请求。在浏览了很多文章之后,这是我想出的:

  1. 创建注销请求 xml 并对其进行数字签名
  2. 将请求 xml 转换为 base64 url​​ 编码的字符串
  3. 将 base64 编码的请求 xml 作为查询字符串附加到 SLO url
  4. 将页面重定向到上述构造的 url (IDP)
  5. 然后,IDP 将在其末尾为所有 SP 执行必要的 SLO 步骤,并重定向回我们当前的应用程序(它启动了 SLO 请求)
  6. 解析上述响应并相应地在 UI 中显示消息

然而,当我进入实际实施时,我面临着以下挑战,其中一些并非特定于 SAML SLO。

  1. 要对注销请求 xml 进行数字签名,是否必须从.pfx文件中加载/导入 x509 证书,或者我可以使用证书存储中具有私钥的任何证书吗?
  2. 出于演示目的,我已使用本地系统中具有私钥的证书成功签署了请求。此过程在注销请求 xml 中附加签名和公钥信息。
  3. 我已经对请求 xml 进行了编码(Base64Url),但生成的字符串长度太长(超过 4k 个字符),这将超过 URL/GET 请求中允许的最大长度。我这一步错了吗?
  4. 没有一篇文章/SAML 规范提到查询字符串的外观。查询字符串参数名称是由 SAML 规范定义的(我可能错过了)还是依赖于 IDP?

总而言之,我觉得 SAML 规范缺乏正确实现的文章,这使得掌握它变得非常困难。

注意:到目前为止,我没有包含我编写的任何代码,因为我的问题可以在没有它们的情况下得到回答。但是,如果需要,我可以包括它们。

许多参考文章中的少数:

标签: c#.netcryptographysaml-2.0

解决方案


我强烈建议使用现有的 SAML 库而不是自己滚动。

其中一些是免费的,您可以检查源代码以了解如何操作。

或者只是使用堆栈本身!


推荐阅读