有谁知道为什么 Rampart 找不到自己的 STS 服务生成的 SAML Token 吗?
我在带有 Rampart 1.6.2 的 Tomcat 7.0.28 中有一个 Axis2 1.6.2 部署。我使用 Rampart STS 服务来获取他们的默认 SAML 令牌。客户端获得的令牌是有效的。(我已经使用 OpenSAML 验证了签名、SAML 配置文件和 XML。)
但是,当我在生成令牌的同一 Axis2/Rampart 部署中运行的 Web 服务请求中包含此令牌时,Rampart 会给出“请求中缺少 SAML 令牌”(由 RampartEngine.process() 发出)。在 NetKernel 和 OpenSAML 中使用单独的实现,我在同一个请求中访问和验证 SAML 令牌没有问题。自 Axis2/Rampart 1.5.1 以来,当我第一次尝试执行此任务时,此问题就一直存在。
有谁知道为什么 Rampart 拒绝自己的 SAML 令牌?您是否找到了让 Rampart 接受其自己的 SAML 令牌的方法?
(我已经断断续续地解决这个问题一年多了;我可能会放弃并使用 Netkernel 和 OpenSaml 并自己做整个事情;我失去了很多 SOAP 帮助,但至少我可以处理 SAML 令牌...在 OpenSAML 的大力帮助下。我更喜欢 Axis2/Rampart 工作!)
我可能对这个问题有部分答案。围绕源代码,我能够将“SAML 令牌丢失”跟踪到验证器中的一行,该行仅检查未签名的 SAML 令牌。必须对 SAML 令牌进行签名。我相信这是错误的原因,但我无法构建壁垒模块来测试它!
回答 我最终能够构建项目并测试上述假设,确实解决了问题。我更改了代码以解决签名和未签名的令牌。向 Rampart 提交了一个 JIRA 问题和解决方案,希望他们能够解决。与此同时,我制作了一个本地版本的 armart-core-*.jar 来解决我的服务问题。