ADFS spring-saml 依赖方未配置 AssertionConsumerService

问题描述 投票:0回答:2

带有 ADFS idp 的 saml。 rutime 错误,sp 未签名元数据在 adfs idp 中导入时没有问题,但我在运行时遇到问题:

在 idp 身份验证后,成功完成身份验证后,在 idp 页面上我收到如下信任错误:

The request specified an Assertion Consumer Service URL
'https://test.it/au/login' that is not  configured on the relying party     'microsoft:identityserver:test.it'.
Assertion Consumer Service URL: https://test.it/au/login  Relying party:     microsoft:identityserver:test.it
that is a prefix match of the AssertionConsumerService URL     'https://test.it/au/login' specified by the request.
This request failed.

我的 SP 元数据是这样的:

<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
                     ID="test.it"
                     entityID="test.it">
    <md:SPSSODescriptor AuthnRequestsSigned="false"
                        WantAssertionsSigned="false"
                        protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <md:KeyDescriptor use="signing">
            <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                                         Location="https://test.it:443/au/login"
                                         index="0"
                                         isDefault="true"/>

我可以补充一下: 如果我从 /adfs/ls/idpinitiatedsignon.htm 启动身份验证过程 我选择我的 sp 提供商(所以我排除了 saml2p:AuthnRequest 上的问题) 有一个帖子重定向到 https://test.it/au/lo 杜松子酒” 我想知道我的 idp 端点上怎么有空格。

我发现这篇文章似乎可以解释 http://social.technet.microsoft.com/wiki/contents/articles/4039.ad-fs-2-0-the-request-specified-an-assertion-consumer-service-url-that-is-not -配置在依赖方.aspx 简而言之,它说:

有两种选择:

  1. 配置 RP,以便在 AuthnRequest 中不指定 AssertionConsumerService

  2. 配置 RP 在 AuthnRequest 中发送匹配的 AssertionConsumerService 值 AD FS 2.0 中 RP 信任的终结点选项卡上的 AssertionConsumerService 值。

你觉得怎么样

如果我使用entityID =“https://test.it:443/au/login”生成元数据 而不是entityID =“test.it”可以避免这个安全问题?

或者我应该删除 saml:request 中的 AssertionConsumerService (是否可以通过配置)?

或者 idp 管理器应该做更好的配置吗?

adfs2.0 spring-saml
2个回答
12
投票

不确定这是否是您面临的相同问题,但在我看来,出现了同样的错误,问题是我没有在我的服务提供商上将我的断言端点添加为身份上 AD FS 中的 SAML 断言消费者端点提供商。

无论如何,值得一试 :) 在 IdP 上的

mmc

 中,添加 AD FS 管理单元。然后在 
AD FS
 > 
Relying Party Trusts
 下找到您的 SP 配置。我的名字叫
Test SSO
。右键单击它,选择 
Properties
,然后在 
Endpoints
 选项卡上,检查您的服务提供商断言端点 URL 是否列在 
SAML Assertion Consumer Endpoints
 下。

我的工作配置是

Endpoint type: SAML Assertion Consumer Binding: POST Default: Yes Index: 0 Trusted URL: https://1337.local/adfs/ls

并且

Trusted URL

 是我在 SP 上的断言端点,即 ADFS 在经过身份验证后发布 SAML 负载的位置。


0
投票
我也有类似的问题。 我听从了@DanielSmedegaardBuus 的建议,没有发现任何消费者断言。 在我导入到 adfs 的metadata.xml 中,服务提供商 url 是 http。 如果您尝试手动添加 http 链接,则会显示“仅允许 https”。 似乎当它导入 xml 时它只是忽略了那些 http url。所以我必须配置我的服务提供商以使用 https,然后它就可以工作了。

© www.soinside.com 2019 - 2024. All rights reserved.