ADFS spring-saml在依赖方上配置了AssertionConsumerService

时间:2015-05-20 20:22:33

标签: adfs2.0 spring-saml

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

在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.     

MY SP METADATA是这样的:

<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启动auth进程 我选择我的sp提供者(所以我排除了saml2p上的问题:AuthnRequest) a有一个帖子重定向到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-configured-on-the-relying-party.aspx 简而言之,它说:

有两种选择:

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

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

  3. 您的想法

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

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

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

2 个答案:

答案 0 :(得分:6)

不确定它是否与您面临的问题相同,但在我的最后却遇到同样的错误,问题是我没有在服务提供商处添加断言端点作为标识提供程序中AD FS中的SAML断言消费者端点。

值得一试,无论如何:)在IdP的mmc中,添加AD FS管理单元。然后在AD FS&gt;下找到您的SP配置Relying Party Trusts。我叫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有效负载的位置。

答案 1 :(得分:0)

我有一个类似的问题。 我遵循@DanielSmedegaardBuus的建议,但没有发现断言消费者。 在我导入到adfs的metadata.xml中,服务提供者的URL为http。 如果您尝试手动添加带有http的链接,则会显示“仅允许使用https”。 似乎在导入xml时,它只是忽略了那些http url。所以我必须将我的服务提供商配置为使用https,然后它才能工作。