首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAML DNS解析问题

SAML DNS解析问题
EN

Stack Overflow用户
提问于 2014-11-15 05:23:11
回答 1查看 1.5K关注 0票数 0

我们有一个使用Spring SAML扩展的应用程序,并将其设置为运行在本地主机上的SP,运行于SSOCircle之上。我们现在已经在客户的测试环境中进行了部署,我们正在尝试让它与客户的IDP一起工作。

我们将元数据提供给IDP,用http://myapp-test.acme.com:8080/myapp/saml/SSO代替http://localhost:8080/myapp/saml/SSO

身份验证后,我们在日志中看到:

基于第一个服务器请求中的值由o.s.m.MetadataGeneratorFilter生成的默认实体基URL http://someappserver.acme.com:8080/myapp

org.opensaml.common.SAMLException:目标http://myapp-test.acme.com:8080/myapp/saml/SSO与配置文件urn:oasis:names:tc:SAML:2.0:profiles:SSO:browser的任何终结点URL都不匹配

在浏览器窗口中,我们看到请求转到了http://someappserver.acme.com:8080/myapp/saml/SSO

因此http://myapp-test.acme.com:8080/myapp/saml/SSO解析为

http://someappserver.acme.com:8080/myapp/saml/SSO

我们如何改变我们的代码/配置来处理这个问题?我认为我们不应该将元数据硬编码到应用服务器。

EN

回答 1

Stack Overflow用户

发布于 2014-11-15 19:51:20

服务提供商元数据中的URL必须与服务提供商从IDP接收SAML消息的实际URL相对应。在这种情况下,两者是不同的。

您可以通过提供具有正确securityContext.xml的属性metadataGeneratorFilter来更新您的entityBaseURL并更改bean URL,例如:

代码语言:javascript
复制
<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter">
    <constructor-arg>
        <bean class="org.springframework.security.saml.metadata.MetadataGenerator">
            <property name="entityBaseURL" value="http://myapp-test.acme.com:8080/myapp"/>
        </bean>
    </constructor-arg>
</bean>

如果不设置此属性,Spring SAML将定义entityBaseURL,并根据收到的第一个请求生成元数据。如果您的应用程序在多个URL上可用,那么这当然可以是与您的IDP实际发送消息的URL不同的URL。

如果应用程序服务器看到的内部URL与调用者使用的URL不同(就像使用DNS解析的情况一样),您可以通过将bean contextProvider更改为:

代码语言:javascript
复制
<bean id="contextProvider" class="org.springframework.security.saml.context.SAMLContextProviderLB">
    <property name="scheme" value="http"/>
    <property name="serverName" value="myapp-test.acme.com"/>
    <property name="serverPort" value="8080"/>
    <property name="includeServerPortInRequestURL" value="true"/>
    <property name="contextPath" value="/myapp"/>
</bean>

你可以在Spring SAML手册的Reverse proxies and load balancers章节中找到更多细节。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26939101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档