Asp.net mvc Azure ACS与ADFS服务器

Asp.net mvc Azure ACS与ADFS服务器,asp.net-mvc,owin,adfs,acs,ws-federation,Asp.net Mvc,Owin,Adfs,Acs,Ws Federation,我们有一个场景,其中我们有一个单一的应用程序,可以从我们的组织访问,也可以从外部组织访问。我们将在azure中托管此web应用程序。我将MVC5与Owin WSFederation中间件一起使用。我可以连接到我的本地ADFS服务器,它可以正常工作 app.UseWsFederationAuthentication( new WsFederationAuthenticationOptions {

我们有一个场景,其中我们有一个单一的应用程序,可以从我们的组织访问,也可以从外部组织访问。我们将在azure中托管此web应用程序。我将MVC5与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=False, 计数=1, 子句[0]=X509RawDataKeyIdentifierLauserawData=MIIC4DCAC…'。确保SecurityTokenResolver填充了所需的密钥

           app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = "https://localhost:44321/",
                MetadataAddress = "https://xxxxxxxx.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml"
            });
我觉得这是一个问题,因为联邦元数据包含签名的密钥,而owin中间件只有来自ACS的元数据,因此无法确定签名者


思想?

领域是否在ACS中配置

如果我实现了这一点,那么我可能会使用ADFS而不是ACS来发现我的家庭领域,因为ACS即将退出

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


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

领域是在ACS中配置的,我认为问题在于,当令牌从IDP之一返回时,签名令牌密钥是在元数据xml中定义的。应用程序指向ACS的元数据xml,因此它不知道IDP的实际签名密钥。IDP将向ACS提供ACS将使用的令牌。ACS随后将发布一个新令牌,该令牌将由ACS证书签名。在应用程序加载期间,OWIN应从ACS中提取元数据,并应具有所有必需的信息,包括密钥。你应该使用HTTPFox之类的工具来准确跟踪你的浏览器在做什么。IDP直接重定向到应用程序,而不是返回ACS,我采纳了你的建议,只是使用了ADFS并设置了一个索赔提供程序,但当然我在索赔提供程序中定义的IDP也有同样的问题。我似乎错过了索赔提供者将令牌发送回ADFS以便ADFS将令牌重新分发到应用程序的步骤。听起来ACS中的端点是错误的。换成