为什么 FederatedAuthentication.WSFederationAuthenticationModule 在 MVC Azure ACS 联合身份验证中为 null?

2023-12-11

我试图将 FederatedAuthentication 与 .NET 4.5、MVC 4 和使用自定义服务器端登录页面的主动重定向结合在一起,使用来自的代码this教程,以及来自this代码示例。

重定向到我的 AccountController 的 LogOn 方法工作正常,该方法如下所示:

public ActionResult LogOn()
{
    HrdClient hrdClient = new HrdClient();
    WSFederationAuthenticationModule fam = FederatedAuthentication.WSFederationAuthenticationModule; /*** Fails here because this is null **/
    HrdRequest request = new HrdRequest(fam.Issuer, fam.Realm, context: Request.QueryString["ReturnUrl"]);
    IEnumerable<HrdIdentityProvider> hrdIdentityProviders = hrdClient.GetHrdResponse(request);
    ViewData["Providers"] = hrdIdentityProviders;
    return View();
}

这失败了,因为FederatedAuthentication.WSFederationAuthenticationModule一片空白。

使用 VS 2012,我运行了新的身份和访问向导(它似乎取代了旧的 STS 对话框)。这给了我一个 FederationMetadata 文件夹,它看起来是正确的,并对我的 Web.Config 进行了一些修改。特别是,模块部分如下所示:

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
  <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
  <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>

并看到了这样的答案8937123 and 8926099,我还添加了以下内容:

 <httpModules>
  <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpModules>

最后,我的 nuget 包配置显示了 Microsoft.IdentityModel,MVC 应用程序正确引用了它:

<packages>
  <package id="Microsoft.IdentityModel" version="6.1.7600.16394" targetFramework="net45" />
</packages>

我也见过这个问题在social.msdn上,这似乎表明STS对话框确实需要运行。

谁能解释一下为什么FederatedAuthentication.WSFederationAuthenticationModule将为空,我能做些什么来阻止这种情况发生?


我设法自己解决了这个问题,并且由于 SO 上有一些与此类似的未解答的问题,我将保留问题并发布我自己的答案。

该问题与将 MVC 应用程序升级到 .NET 4.5 有关。 WIF 的大部分功能保持不变(至少表面上如此),但类已全部移至不同的程序集。我按照此处的迁移指南解决了我的问题:http://msdn.microsoft.com/en-us/library/jj157089.aspx

最重要的是删除旧的引用Microsoft.IdentityModel包(v 3.5.0)并确保它们被替换为类似的引用System.IdentityModel and System.IdentityModel.Servicesdll,应该是 4.0 版本,并且来自 GAC 而不是外部包。

我的修复步骤是:

  • 清除我添加到 Web.Config 中的所有垃圾,然后使用默认的 MVC 配置文件重新开始。
  • 去除Microsoft.IdentityModel打包并取消引用 dll
  • 在 VS 2012 中运行访问和身份向导
  • 复制System.IdentityModel.Services.WSFederationAuthenticationModule参考自<system.webServer><modules> in <system.web><httpModules>
  • Add <authentication mode="Forms"><forms loginUrl="~/Account/LogOn" /></authentication>
  • 编译、测试、跳起欢乐的小吉格舞……

这样就得到了原来的WIF3.5/MVC3代码示例在.NET 4.5下工作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 FederatedAuthentication.WSFederationAuthenticationModule 在 MVC Azure ACS 联合身份验证中为 null? 的相关文章

  • Ajax 长轮询无法正常工作

    我正在 MVC 2 中使用长轮询开发一个简单的陌生人聊天应用程序 如果我在不同的浏览器中打开应用程序 它在我的开发机器上工作正常 我的意思是 如果我在 IE 和 mozilla 中加载应用程序 它工作正常 如果我在浏览器的两个选项卡 例如
  • 在 ASP.Net MVC 中的同一视图中分离两个表单

    我已将创建帐户视图和登录视图合并到同一视图中 所以这是一个具有两种表单的视图 但是当我提交时它们会混合在一起 如果我尝试登录并显示错误 Html ValidationSummary 两种形式都会出现错误 我开始将字段重命名为 loginPa
  • 重置 IIS 中的静态变量

    我已在 ASP NET MVC 应用程序的应用程序启动事件中为静态变量分配了值 protected void Application Start public static list
  • 为我的网站构建 API 哪个更好:MVC 或 Ado.net 数据服务?

    我有一个用MVC构建的网站 现在我想为这个网站构建一个API 让用户使用这个API来实现不同的网站 Web服务 插件和浏览器扩展 我经历过这个article http weblogs asp net cibrax archive 2010
  • bootstrap css中垂直对齐缩略图?

    我认为这应该很简单 但我就是无法让它发挥作用 在 ASP NET MVC 中 我有一个如下所示的项目列表 div class row div class span12 ul class thumbnails foreach var film
  • 如何重定向到 $.AJAX 上的视图完整 - asp.net mvc 3

    好的 我想在验证检查后使用 AJAX 将用户重定向到周围视图 我该怎么做 请帮忙 这是我的 AJAX 代码 EX 我希望用户重定向到 Home Movies 控制器操作 如果未登录 则停留在同一页面
  • 在哪里存储 asp.net mvc 项目的图像以及如何从 site.master 引用它们

    我有一个新的 asp net mvc 项目 我正在尝试找出存储图像的最佳位置 以及如何从 site master 引用它们 如果我有一个标题图像 我想显示在所有页 建议或最佳实践 我通常做的是在我的内容文件夹中创建一个 图像 文件夹 只要保
  • 读取 ASP.NET 中分块传输编码的 http 请求的正文

    J2ME 客户端正在使用分块传输编码发送 HTTP POST 请求 当 ASP NET 在 IIS6 和 WebDev exe server 中 尝试读取请求时 它将 Content Length 设置为 0 我想这没问题 因为加载请求时
  • 当 URL 包含 ASP.Net Core 参数的“+”时出现 404 错误

    当参数包含编码为空格的空格时 我的服务器返回 404 错误 代替 20 我不明白为什么 路线的形式为 Route Search PRM1 prm1 PRM2 prm2 PRM3 prm3 我的第一个问题是如何让服务器理解这种 URL htt
  • 未找到与 Web API 中的请求 URI 匹配的 HTTP 资源

    我已经像这样配置了我的 WebApiConfig public static void Register HttpConfiguration config config Routes MapHttpRoute name DefaultApi
  • 实体框架中的多态性

    具体类 BankAccount and CreditCard 在控制器上不可见 我被这个问题困扰了 我正在使用该网站的示例 http weblogs asp net manavi archive 2010 12 28 inheritance
  • 在 MVC 2 编辑器模板中正确注册 JavaScript 和 CSS

    如何在 ASP NET MVC 2 RTM 编辑器模板中正确注册 javascript 块 我所处的具体场景是我想使用Dynach JSCal2 日期时间选择器 http www dynarch com projects calendar
  • MVC 5 Razor 活动导航选项卡

    我一直在尝试突出显示我的项目中的活动导航选项卡 我的任务是更新旧网站而不更改为引导程序 这是我的经验所在 我找到了一个包含我需要的大部分内容的示例 目前 唯一具有 选定类别 的选项卡是 主页 选项卡 当我单击另一个选项卡时 主页 选项卡不再
  • IE8 中的 Javascript 消息超出堆栈空间

    我正在使用 Breeze 1 4 1 Internet Explorer 8 和 ASP NET MVC 4 Web API 我在查询时收到以下消息 查询失败 localhost port breeze Data Metadata 元数据导
  • 版本弃用 Facebook Graph API v2.2

    我们的 Facebook 登录现在无法使用 我们收到了来自 Facebook 开发者门户的消息 应用程序名称 当前可以访问 Graph API v2 2 该 API 将到达其末尾 截至 2017 年 3 月 27 日 有效期为 2 年 为了
  • Kendo UI 网格 - 显示行号

    如何在 Kendo UI 网格中显示行号 我的代码不起作用 页面显示该列 但它是空的 int counter 1 Html Kendo Grid
  • 如何在网站上重新创建电子表格或共享点数据表视图?

    我正在尝试将用户从共享点解决方案迁移到网站 SQL 后端 一件事是每个人似乎都喜欢共享点视图和数据表视图来编辑和管理信息 什么是最好的电子表格 访问数据编辑解决方案 是否有任何第三方 ASP NET MVC 小部件是很好的替代品 Teler
  • 外部组件中的控制器上的 404

    我在解决 Asp Net MVC 4 项目中的 404 响应时遇到问题 它是在 VS2012 中构建的 目标版本为 4 5 我已将预编译的视图和控制器内置到独立的 DLL 中 我能够动态加载 DLL 并从我的核心项目中检查它们 甚至调用它们
  • asp.net MVC ModelState.IsValid 返回 false

    我正在开发 ASP NET MVC 应用程序 我有一个视图模型如下 public class SampleInterestViewModel Properties defined One such property that shows a
  • ASP.NET Web api - 设置自定义 IIdentity 或 IPrincipal

    在我们的asp net mvc web api项目中 我们想要使用自定义授权AuthorizeAttribute 我们注意到有两种不同的AuthorizeAttribute 一于System Web MVCMVC 的命名空间和其他的命名空间

随机推荐

  • 使用两个域相同的数据库和不同的 WordPress 主题

    我想使用相同的数据库 内容 用户 评论 元 类别等 在我的子目录中安装另一个wordpress 我实际上想创建我的网站的移动版本 但我不想使用任何移动检测脚本或 css3 媒体查询 只是想创建我的新主题 适用于移动版本 例如 主域还有子域
  • 将数组作为数组而不是 PHP 中的 JSON 传递给 javascript

    首先 这不是重复的问题 我已经研究过一些类似的问题 大部分答案就是我现在正在使用的 这是问题设置 在 PHP 端 array array name gt a data gt array 0 gt 15 0 25 gt 18 0 35 gt
  • R 中选定列的行平均值

    让我们用著名的例子来说明这个问题iris数据集 我需要按行应用选定的函数 但仅在选定的列上应用 示例如下 library tidyverse iris gt mutate at funs scale vars vars c Species
  • 从 SQLite 数据库获取纬度和经度以在 Android MapOverlay 中使用

    如果我将一堆位置的纬度和经度存储在 SQLite 数据库中 我将如何检索这些值并将它们分别放入 OverlayItem 类中以便在 Google 的地图代码中使用 数据库名称 database 表名 place 字段位于place Tabl
  • 显示对象引用的值

    在 C 中 显示对象指针的实际值相当简单 例如 void p new CSomething cout lt lt p 有没有办法在 NET 中做这样的事情 这样做的价值只能是教育性的 例如出于演示目的 例如向学生展示一个值 而不是仅仅比较参
  • 将overlay2存储驱动程序与overlay文件系统结合使用

    Goal 我在 Live CD 中运行 docker 并且我想缓存 docker 构建的结果 主要是为了当我重新启动到此 Live CD 时使用 我的想法是建立一个overlayfs in var lib docker 所以 我有以下内容
  • SWR 挂钩不反映数据库更改

    该组件用于计算部署在 AWS Lambda 上的 Next js 应用程序中页面级别的视图数 function ViewsCounter slug slug string const data useSWR api views slug f
  • PHP摩尔斯电码转换器

    我正在用 PHP 编写一个基本的莫尔斯电码转换器 它可以接受一个字符串并将其转换为莫尔斯电码 它使用关联数组 foreach 循环和for 循环 它可以工作 除了由于某种原因它在每个转换后的字符后输出与 0 等效的莫尔斯电码 我不知道0是从
  • 在 mail.body 中查找“回车符”

    我有这样的邮件 Hello 请注意 我们在 16 点 15 分 已采取的行动 重建等 真挚地 Mr 每封邮件中的操作都会发生变化 我想要的是将操作插入到我的 Excel 中 问题是我不知道如何获得 回车符 我不知道这是否是正确的名称 这就是
  • Volley SSL - 主机名未验证

    我正在开发一个 Android 应用程序 我需要访问 HTTPS 地址 我正在使用 Volley 请求我的数据 但现在我收到此错误com android volley NoConnectionError java io IOExceptio
  • 如何实现JavaFX和非JavaFX交互?

    我已经开始使用 JavaFX 创建一个用于用户交互的窗口 以便在另一个非 JavaFX 程序中使用 我的主程序叫做Abc类 有一个 main 方法 这是一个非 JavaFX 程序 而是普通的 Java 该程序运行一些活动 然后要求用户选择一
  • java使用过多内存

    在我的一个项目中 我不断压缩小数据块 现在我发现jvm随后增长到6GB RAM 常驻 RES RAM 不是共享或虚拟等 然后由于内存不足而死掉 就好像垃圾收集器从未运行过一样 我已经提取了相关代码并将其粘贴在下面 当我运行它 java6 3
  • moment js 中的自定义长日期格式

    有没有办法根据区域设置将自定义格式代码添加到长日期时刻 例如 moment format L 是一种现有格式 它将打印区域设置的长日期 包括年份 但如果我想添加自己的排除年份的格式 如下所示 moment format LTY 它只是打印给
  • 部分专业化消歧优先链的更好模式?

    考虑以下一系列部分专业化 template
  • 根据索引将一个数据帧除以另一个数据帧

    我试图将数据帧的行除以另一个数据帧中的相同索引行 每个数据帧中有相同数量的列 目标是将一个列列表除以另一个列列表 有没有办法在 Pandas 中做到这一点 这是一个示例数据 import pandas as pd import numpy
  • 如何使用 Selenium WebDriver 从隐藏元素读取文本?

    我正在尝试阅读示例字符串1000从隐藏的 div 像这样 div 1000 div 我知道WebElement getText 不适用于 Selenium 2 WebDriver 中的隐藏元素 因此我搜索了解决方案 像这个 显然下面的代码应
  • 在 ggplot2 中的单个图上绘制 3 个变量

    您好 有一个由三个变量组成的实验 我想将它们全部绘制在一个图上 这是我的 df AB lt data frame block c A A A A B B B B familiarity c fam fam unfam unfam prime
  • 4x4 应用程序小部件在平板电脑上被检测为 3x3

    我创建了一个 4x4 appwidget 将 minWidth 和 minHeight 设置为 250dp 如建议的那样 应用程序小部件设计指南 http developer android com guide practices ui g
  • 在 Razor 的 Javascript 中嵌入 Html.ActionLink

    我知道可以在 MVC3 的 Javascript 中嵌入 Html 但我无法让以下内容工作 并且不确定这是否可能 使用 jQuery DataTable 我通过 AJAX 调用来创建新行 然后使用数据表 API 以编程方式添加它 这一切都有
  • 为什么 FederatedAuthentication.WSFederationAuthenticationModule 在 MVC Azure ACS 联合身份验证中为 null?

    我试图将 FederatedAuthentication 与 NET 4 5 MVC 4 和使用自定义服务器端登录页面的主动重定向结合在一起 使用来自的代码this教程 以及来自this代码示例 重定向到我的 AccountControll