2010-12-15 123 views
2

我需要使用一个服务提供商与多个身份提供商(idps)每个idp通过使用子域连接到sp,即http://subdomain1.mysite.com连接到idp1,http://subdomain2.mysite.com连接到idp2等那么我的断言消费者服务URL看起来像这样https://mysite.com/SAML/AssertionConsumerService.aspxSAMLv2 SP发起:一个服务提供商和多个身份提供商

问题是我需要知道什么idp响应来自AssertionConsumerService.aspx代码,所以我可以加载正确的证书。我试过发行人,回应目的地和其他方式,但没有运气。

有谁知道区分idps与响应和/或最佳实践的好方法吗?还是有一个标准的方法来做到这一点?

我使用http://www.componentspace.com/Products/SAMLv20.aspx

回答

1

在我们的系统,我们有一个表示客户端的实体(我们称之为“服务域”),并要求该客户端通过名称来识别该实体既可以作为发行人元素值或发行人SPProvidedID属性值。我们的端(SP)上的SAML配置与该“服务域”实体相关联,例如包括用于验证其数字签名的公钥证书。

我会说使用发行人值比尝试关闭子域名更合适。

2

正如你已经注意到了,如果你有相同的ACS URL为所有国内流离失所者,则目标将永远是声明中的相同。

每个IDP应该(必须)拥有自己独特的颁发者,至少如果他们也拥有自己的公共证书,他们正在签署。根据我的经验,PingFederate和其他服务器确保在验证响应时加载正确的配置信息。不知道为什么Issuer在这种情况下也不会为你工作。

您可能会遇到来自同一家公司的“不同”IDP可能向您发送的情况使用同一颁发者和不同DSIG证书和AttributeStatements的回复,但在大多数情况下不应发生这种情况。

HTH 伊恩

+0

嗨,感谢您的回复。我可以使用idp issuer,即https://subdomain.idp1.com中的idp1位,并根据该证书获取证书,但它看起来像是一个修复?你会推荐发行人的方式吗?我读过你可以使用idp的元数据文件,但我不认为它连接到响应(断言)。使用相同ACS URL的主要原因是您不必为每个sp子域名和重复的代码购买SSL。 – ctb 2010-12-15 16:07:29

+1

我同意下面的JST。 “发行者”元素必须出现在消息中(按照规范),并且是签名消息(响应或声明)IIRC的一部分。你应该依靠这一点。 – Ian 2010-12-17 15:55:51