由于 IDP 中的 HttpServletRequest URL 和目标 URL 不匹配,OpenSamlAuthenticationProvider.validateSaml2Response 身份验证异常如下所示:
if (StringUtils.hasText(samlResponse.getDestination()) && !recipient.equals(samlResponse.getDestination())) {
throw this.authException("invalid_destination", "Invalid SAML response destination: " + samlResponse.getDestination());
}...
- HttpServletRequest URL 返回发出 SAML 请求的应用服务器的主机名 (localhost:port),而不是 dns 名称。
- 我们的应用程序位于负载均衡器后面。
- 我们尝试将 proxyName 和 proxyHost 添加到 Tomcat 中的 Http 连接器。我们的协议仍然不匹配,我们不相信这是正确的方法。
- 这一定是一个常见的问题,以至于我们没有使用的 Spring SAML 扩展有一个配置类来处理这个确切的问题。
- 我认为我们不能使用拦截器,因为 HttpServletRequest URL 不可修改。
想知道是否有其他人处理过类似的事情并找到了解决方案。