如何使用 Windows Azure 访问控制服务 (ACS) 和自定义 STS 修复"not a known principal"错误



我正在研究联邦身份验证的概念验证。

我已经创建了一个自定义STS(基本上是重写了Windows Identity Foundation Basic STS样本),并设置了依赖方来成功使用它。

PoC的下一阶段是使用Azure ACS允许使用Google/LiveID/etc凭证联合登录,以及自定义STS提供的凭据。

一切正常,除了我不能让Azure ACS接受自定义STS的令牌。

给出的错误有:

ACS20001: An error occurred while processsing a WS-Federation sign-in response
ACS50008: SAML token is invalid
ACS50026: Principal with name 'mysts.mycorp.co.uk' is not a known principal

现在,对我来说,这看起来像是ACS无法从自定义STS解密SAML令牌,但是Azure ACS中安装的唯一解密证书是用于签名和加密自定义STS响应令牌的证书。

我在这里错过了什么?

答案当然就在我眼前……

ACS要求STS的联合元数据中的发行者名称与令牌中的发行者名称完全匹配…

在我的app.config中,我错过了发行者名称的http:// - ACS将缺乏介绍人解释为证书参考,并且正在寻找发行者CN=mysts.mycorp.co.uk而不是http://mysts.mycorp.co.uk的证书