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

ale*_*o77 4 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.     
Run Code Online (Sandbox Code Playgroud)

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"/>
Run Code Online (Sandbox Code Playgroud)

我可以补充一下:如果我从/adfs/ls/idpinitiatedsignon.htm启动auth进程,我选择我的sp提供程序(所以我排除了saml2p上的问题:AuthnRequest),有一个帖子重定向到https://test.it/au/lo gin"我想知道我在idp上的端点是如何在它上面有空白的.

我发现这篇文章似乎解释了 http://social.technet.microsoft.com/wiki/contents/articles/4039.ad-fs-2-0-the-request-specified-an-assertion-consumer-service- url-that-not-configured-on-relying-party.aspx 简而言之,它说:

有两种选择:

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

  2. 配置RP以在AuthnRequest中发送AssertionConsumerService值,该值与AD FS 2.0中RP Trust的Endpoints选项卡上的AssertionConsumerService值匹配.

你怎么看

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

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

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

Dan*_*uus 8

不确定它是否与您面临的问题相同,但在我的结尾有同样的错误,问题是我没有在我的服务提供商上添加断言端点作为身份提供商的AD FS中的SAML断言消费者端点.

值得一试,无论如何:)在mmcIdP上,添加AD FS管理单元.然后在AD FS> 下找到您的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
Run Code Online (Sandbox Code Playgroud)

并且Trusted URL是我在SP上的断言端点,即ADFS在经过身份验证后发布SAML有效负载的位置.