带有 ADFS 服务器的 Azure ACS

Azure ACS with ADFS Server

我们有一个场景,我们有一个应用程序,可以从我们的组织访问,也可以从外部组织访问。我们将在 Azure 中托管此 Web 应用程序。我将 MVC 5 与 Owin WSFederation 中间件一起使用。我可以连接到我的本地 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 = 假, 计数 = 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 的元数据,因此无法确定签名者。

想法?

ACS中是否配置了realm?

如果我正在实施这个,那么我可能会使用 ADFS 而不是 ACS 来进行我的 Home Realm Discovery,因为 ACS 即将过时。

我会将 Azure 配置为 ADFS 中的附加声明提供程序,并且只让我的应用程序使用 ADFS。

您还可以更好地控制 HRD 页面的外观。