我们有一个场景,我们只有一个应用程序可以从我们的组织访问,也可以从外部组织访问。我们将在azure中托管此Web应用程序。我正在使用MVC 5和Owin WSFederation Middleware。我可以连接到我的本地ADFS服务器,它按预期工作。
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = "https://localhost:44321/",
MetadataAddress = "https://sso2.xxxxx.com/FederationMetadata/2007-06/FederationMetadata.xml"
});
当我使用ACS作为主STS并将ADFS服务器设置为IDP时,它会路由到正确的ADFS登录页面,但是一旦我进行身份验证,我就会收到此错误
ID4037:无法通过以下安全密钥标识符解析验证签名所需的密钥' SecurityKeyIdentifier ( IsReadOnly = False, 计数= 1, Clause [0] = X509RawDataKeyIdentifierClause(RawData = MIIC4DCCAc ...'。确保使用所需的密钥填充SecurityTokenResolver。
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = "https://localhost:44321/",
MetadataAddress = "https://xxxxxxxx.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml"
});
我觉得这是一个问题,因为联合元数据包含签名的密钥,并且由于owin中间件只有来自ACS的元数据,因此无法确定签名者。
思想?
答案 0 :(得分:0)
是否在ACS中配置了域?
如果我正在实现这一点,那么我可能会在我的Home Realm Discovery中使用ADFS而不是ACS,因为ACS已经出现了。
我会将Azure配置为ADFS中的其他声明提供程序,并且只使用ADFS使用我的应用程序。
您还可以更好地控制HRD页面的外观。