c# - 创建 SAML SLO 请求
问题描述
作为服务提供商 (SP),我正在尝试使用 URL 重定向流创建 SLO 请求。在浏览了很多文章之后,这是我想出的:
- 创建注销请求 xml 并对其进行数字签名
- 将请求 xml 转换为 base64 url 编码的字符串
- 将 base64 编码的请求 xml 作为查询字符串附加到 SLO url
- 将页面重定向到上述构造的 url (IDP)
- 然后,IDP 将在其末尾为所有 SP 执行必要的 SLO 步骤,并重定向回我们当前的应用程序(它启动了 SLO 请求)
- 解析上述响应并相应地在 UI 中显示消息
然而,当我进入实际实施时,我面临着以下挑战,其中一些并非特定于 SAML SLO。
- 要对注销请求 xml 进行数字签名,是否必须从
.pfx
文件中加载/导入 x509 证书,或者我可以使用证书存储中具有私钥的任何证书吗? - 出于演示目的,我已使用本地系统中具有私钥的证书成功签署了请求。此过程在注销请求 xml 中附加签名和公钥信息。
- 我已经对请求 xml 进行了编码(Base64Url),但生成的字符串长度太长(超过 4k 个字符),这将超过 URL/GET 请求中允许的最大长度。我这一步错了吗?
- 没有一篇文章/SAML 规范提到查询字符串的外观。查询字符串参数名称是由 SAML 规范定义的(我可能错过了)还是依赖于 IDP?
总而言之,我觉得 SAML 规范缺乏正确实现的文章,这使得掌握它变得非常困难。
注意:到目前为止,我没有包含我编写的任何代码,因为我的问题可以在没有它们的情况下得到回答。但是,如果需要,我可以包括它们。
许多参考文章中的少数:
解决方案
推荐阅读
- powershell - PowerShell 使用从调用命令中返回的值更新列表变量
- python - 我现在做错了什么来验证我的课程?
- azure - Azure AKS pod 日志在 Log Analytics 中显示有 30 多分钟的延迟
- java - Spring Boot 向 JWT 注册
- javascript - 如何在 React 中使用 onClick 重置状态的特定部分
- c# - 表达式体匿名方法
- c++ - `<<` 和 `==` 之间的运算符优先级问题
- javascript - 为什么 keyup 事件监听器触发的函数包含以前的按键历史?
- c++ - 多 cpu 架构的 C++ 单元测试
- python - 如何在启动时运行 Python GUIS (Ubuntu)