找不到securityToken的有效键映射

时间:2014-06-19 10:12:40

标签: asp.net-mvc azure visual-studio-2013 asp.net-mvc-5 federated-identity

我正在开发用于在MVC-ASP.net中显示认证身份声明的测试应用程序(Visual Studio 2013) 我已通过以下方式从活动目录中进行了身份验证。

1.在解决方案中添加新的mvc项目。 2.点击更改身份验证。 3.选择组织帐户 4.选择内部。 5.given联邦网址 6.App Id url

运行应用程序后,我收到以下错误。

WIF10201:找不到securityToken的有效密钥映射:'System.IdentityModel.Tokens.X509SecurityToken'和颁发者:'http://websso.avanade.com/adfs/services/trust'

此错误仅适用于我能够查看声明的其他联盟的联合。

在互联网上搜索后,我认为这是证书(指纹)问题。 但我不清楚解决方案。

任何人都可以解释为什么这个错误抛出和解决方案相同。

先谢谢!!!

4 个答案:

答案 0 :(得分:9)

此错误可能有两个原因。

  1. 在web.config中缺少指纹:从ADFS获取实际指纹并将指纹放在指纹标记下

  2. 站点和ADFS配置之间的端口号不匹配:使用包含正确端口号的URL更新ADFS配置

  3. 第二个解决方案为我修好了......

答案 1 :(得分:1)

我在尝试更新旧版MVC应用程序以使用AAD时遇到了这个问题。

我使用组织身份验证对新创建的项目进行了更改,并注意到我没有名为DefaultConnection的连接字符串,DatabaseIssuerNameRegistry假定您将使用,也没有任何必需的连接字符串数据库中的表。

使用Vittorio Bertocci的great post with all the details,我重构了代码以集成新数据库表,创建并应用迁移,并在新IssuingAuthorityKeyTenant中插入适当的密钥和租户表格,分别。我还必须确保更改DatabaseIssueNameRegistry以使用现有的DbContext

答案 2 :(得分:0)

对于在VS2013及更高版本中创建的解决方案,解决方案应包含自动滚动键的逻辑。无需将值放在web.config文件中。

将解决方案从本地迁移到其他环境时,可能会遇到此问题。在这种情况下,您可能会尝试将解决方案指向Azure Active Directory中的新应用程序。请检查以下内容:

  • 确保web.config中的所有网址都指向正确的网址,而不是在本地设置时自动生成的网址
  • 从IssuingAuthorityKeys表中删除所有企业。当您重新构建解决方案并运行它时,密钥将自动填充。在服务器上,您可能需要手动替换dll才能刷新
  • 最后也是最重要的,删除租户表中的所有行。在新环境中首次运行时,拥有Active Directory的管理员必须注册并授权该应用程序。

如果在这些步骤后仍未自动填充两个表中的值,请查看此article以了解有关如何手动获取值的步骤。

答案 3 :(得分:0)

缩略图和服务器名称在web.config中区分大小写。确保正确键入并重新启动IIS。

它解决了我的问题。