当前位置: 首页 > 知识库问答 >
问题:

Nginx背后的Spring SAML 2.0

钮边浩
2023-03-14

我有一个Spring-boot web应用程序,它使用https://samltest.id/提供的SAML身份验证。

它在localhost上工作得很好,但现在我试图将它放在有nginx的服务器上。Ngnix的配置使得任何http请求都被重定向到https,并且https://myserver.company.com/myapp/被发送到http://local_ip:local_port/。

<md:AssertionConsumerService Location="http://myserver.company.com:80/saml/SSO"
    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" isDefault="true" index="0"/>
<md:AssertionConsumerService Location="http://myserver.company.com:80/saml/SSO"
    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" index="1"/>

请注意,URL是基于HTTP的。

经过大量的Google搜索,我尝试了以下方法:我修改了samlprocessingfilter配置,使filterprocessesurl属性为“/myapp/saml/sso”而不是默认值“/saml/sso”

现在metadata.xml包含:

<md:AssertionConsumerService Location="http://myserver.company.com:80/myApp/saml/SSO"
    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" isDefault="true" index="0"/>
<md:AssertionConsumerService Location="http://myserver.company.com:80/myApp/saml/SSO"
    Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" index="1"/>
    null

现在,在成功登录后,我会像预期的那样被重定向到https://myserver.company.com/myapp/SAML/sso,但是我从应用程序中得到一个401,其中包含消息“Authentication failed:incommed SAML message is invalid”,并且在应用程序日志中有“org.opensaml.common.samlException:Unsupported Request”。

共有1个答案

丌官凯康
2023-03-14

经过几次尝试,我找到了解决办法。不需要修改SamlProcessingFilter或上下文根。关键是使用SamlContextProviderLB而不是手册“高级配置”一章中所述的SamlContextProviderImpl。另外,在我的问题中已经描述的EntityBaseURL更改也是必要的(手册中也有)。

 类似资料:
  • 我想在代理之后提供Restful API,但我不知道如何将请求重定向到Spring Boot应用程序,以便可以使用域名访问它。 我的Spring Boot应用程序使用spring-boot-starter-tomcat运行,应用程序部署良好,我可以在服务器上使用java-jar myApplication.jar部署它。 该应用程序还可以通过写入远程访问https://1.2.3.4:8090在浏

  • 我在docker容器中运行spring boot micro serivce,作为kubernetes吊舱运行。 当spring启动应用程序在本地运行时,swagger UI运行良好。 当部署到我们的kubernetes集群时,我们使用nginx将请求代理到pod。 我正在努力弄清楚如何让昂首阔步的用户界面与nginx一起工作。 到目前为止我尝试过的事情 在我的“ssl.conf”中,我尝试添加以

  • 前言 预处理 简述 打印出预处理之后的结果 在命令行定义宏 编译(翻译) 简述 语法检查 编译器优化 生成汇编语言文件 汇编 简述 生成目标代码 ELF 文件初次接触 ELF 文件的结构 三种不同类型 ELF 文件比较 ELF 主体:节区 汇编语言文件中的节区表述 链接 简述 可执行文件的段:节区重排 链接背后的故事 用 ld 完成链接过程 C++ 构造与析构:crtbegin.o 和 crten

  • 防火墙:终止https,添加“x-forwarded-proto:https”,通过http转发到Apache Apache:通过ajp转发到Tomcat Tomcat:通过ajp-connector接收请求 我们已经将RemoteIpValve添加到Tomcat的server.xml中: 如果我们跳过Apache,直接从防火墙转到使用常规HTTP连接器的Tomcat,它就可以工作。在这种情况下,

  • 问题内容: 是否可以在使用NTLM身份验证的HTTP代理后面运行?如果是,如何设置服务器的地址和端口,用户名和密码? 问题答案: 我通过以下方式解决了此问题(操作系统:Windows XP SP3): 1. 下载CNTLM安装程序并运行它。 2. 在cntlm.ini中找到并填写这些字段。 不要填写该字段,在文本文件中存储未加密的密码永远不是一个好主意。 3. 打开控制台,然后键入以下命令以生成密