WsFederation 身份验证登录循环

2023-11-29

我在使用时遇到登录循环问题WsFederation Authentication在我的 MVC Web 应用程序中。我使用 Visual Studio 创建 Web 应用程序的脚手架并设置WsFederation in the Startup.cs。它生成以下代码块:

public class Startup
{
    private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
    private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];

    public void Configuration(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
        {
            Wtrealm = realm,
            MetadataAddress = adfsMetadata
        });
    }
}

Web 应用程序托管在 Azure 中,ADFS 位于本地。

在某些客户端上,当尝试登录时,登录页面会进入循环,请求新令牌,从而导致 ADFS 服务器上出现以下异常:

异常详细信息: Microsoft.IdentityServer.Web.InvalidRequestException:MSIS7042:同一客户端浏览器会话在过去“7”秒内发出了“6”个请求。请联系您的管理员了解详细信息。

我读过 StackOverflow 上的很多文章,查看了编写 IdentityServer 的人提供的各种示例,并且尝试了各种配置选项,但无法将问题隔离到特定区域。

据我所知,这是 OWIN 中间件丢失对象上下文的普遍问题,因此令牌“丢失”。

我曾尝试实施其中的一些示例代码其他人在 StackOverflow 上提供了这些内容,但是我似乎找不到解决我的问题的解决方案,或者可能没有正确实现代码。

有任何想法吗?


问题的原因是请求和响应 URL 不相同。 IE。当用户输入网站 URL 且未使用 HTTPS 前缀时,就会发生重定向循环。

原因是隐藏的,因为如果用户未经身份验证或授权,他们会立即重定向到 ADFS。

我所要做的就是确保所有用户请求都重定向回 HTTPS URL 并删除 HTTP 绑定。(要么 要么 都可以正常工作)

这是我用来确保所有请求都重定向到 https 的代码。

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect to https">
          <match url="(.*)"/>
          <conditions>
            <add input="{HTTPS}" pattern="Off"/>
            <add input="{REQUEST_METHOD}" pattern="^get$|^head$" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

我希望这篇文章对您有所帮助。

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

WsFederation 身份验证登录循环 的相关文章

随机推荐

  • 有没有办法在 pandas 数据框中附加列表? [复制]

    这个问题在这里已经有答案了 我在 pandas 中有一个专栏dataframe dfr其中有一个空列表 当我尝试附加它时 整个列都被更改 下面是附加的代码 N 10 Nr list range 10 dfr pd DataFrame Nr
  • 计算图像浏览次数

    我想要一个图像代码来计算图像被查看的次数 无论图像在哪个网站上找到 我想使用 img src 标签 并让 src 指向一个 php 页面 该页面计算该视图 然后返回要查看的图像 我在想这样的事情 img src www mywebsiteu
  • 在导航选项卡上切换处于活动状态的 css 类

    我对 Vue 还很陌生 所以我正在构建一个测试项目来尝试一下 我有一些标签 div class tabs ul li class is active a first tab a li li a second tab a li li a th
  • 在 R 中将数据帧按 3 列拆分为所有可能的数据帧组合

    我需要从原始数据帧拆分为 3 列的所有可能组合中接收所有可能的数据帧 所有数据框必须包含 id 列 我陷入了困境 不知道如何保存所有可能的数据帧 以便可以进一步处理所有数据帧 想法之一是将它们保存到列表中 但我仍然不知道如何将所有必要的列绑
  • 通过 ref 传入对象

    有什么区别 public function Foo ref Bar bar bar Prop 1 public function Foo Bar bar bar Prop 1 本质上 ref 的意义是什么 对象不总是通过引用吗 关键是你从来
  • 重写所有 URL

    我想重写类似的东西 http www example com index php var1 val1 var2 val2 var3 val3 Into http www example com var1 val1 var2 val2 var
  • C++:为事件处理程序创建匿名类

    免责声明 该描述包含许多 Qt 细节 他们没有必要回答这个问题 我只是想给你介绍一下背景 我需要对此做出反应focusInEvent of a QTextEdit 不幸的是 这不能作为信号使用 这就是为什么我需要子类化QTextEdit 由
  • 从另一个 ViewController 获取 NSDate 到 titleForHeaderInSection

    我有两个视图 第一个是日历 第二个是带有tableView 我正在尝试显示从第一个视图中选择的日期 设法获取里面选定的日期ViewDidLoad我的 secondaryView 的方法 我如何添加我的NSDate to my NSStrin
  • iTextSharp CreateInk 方法:曲线和角

    我正在使用 iTextSharp 使用 PdfAnnotation CreateInk 在 PDF 文档中绘制标记图形 我正在尝试绘制矩形 并传入五个坐标的数组 我知道 iTextSharp 有一个专门用于绘制矩形的函数 但我尝试仅使用一种
  • 如何在 macOS 上从源代码构建 docker-ce

    有人知道是否有从源代码构建并用其替换 Mac 上的 docker 二进制文件的指南吗 自述文件没有说所以我尝试了一些 make target 但得到了https github com docker for mac issues 3353 E
  • 如何避免数据库死锁?

    一些数据库功能 例如SELECT FOR UPDATE and ON DELETE CASCADE 隐式地容易受到死锁的影响 因为数据库没有指定将使用什么锁定顺序 我发现two 讨论这暗示 SQL 标准并未指定此行为 更不用说具体的实现了
  • MongoDB 更新数组元素

    我有一个像这样的文档结构 id ObjectId 52263922f5ebf05115bf550e Fields Field Lot No Rules Field RMA No Rules 我尝试通过使用以下代码推入将保存对象的规则数组来进
  • android - For 循环中的 R.string.[variable]?

    我正在尝试创建一个R string variable in a for循环可以节省我很多代码行 我尝试过这个 但它不起作用 在 strings xml 中 我有这些
  • Ionic 2 中的页面过渡动画

    我有简单的选项卡模板 Ionic 3 应用程序 其中每当用户根据左或右在视图上滑动时 我都会在选项卡之间切换我会在选项卡和所有工作正常之间切换 接受点击选项卡发生页面转换时没有动画效果或通过滑动屏幕 我正在获取页面推送和弹出的动画 this
  • 如何在 Entity Framework Core 中正确播种具有循环依赖关系的数据?

    首先 我使用 Entity Framework Core 在 NET Core 3 1 中 和代码优先方法 想象一下我有几个这样的实体 public class Employee Key Required public int Id get
  • 如何通过 bash 中的变量传递带空格的命令行参数[重复]

    这个问题在这里已经有答案了 我想要实现的是从文件中读取命令行参数并使用它们调用命令 所以本质上我需要通过 bash 变量传递参数 问题是有些参数中有空格 我怎样才能做到这一点 不工作的代码 来说明问题 file txt 内容 引号只是为了显
  • 使用互操作在 Word 2010 中按样式查找段落

    有人可以给我指出正确的方向 或者告诉我如何使用 c net 中的单词互操作按样式名称查找段落 尝试这样的循环 using WN Microsoft Office Interop Word WN Application WordApp Wor
  • ui 选择 angularjs 设置输入值的最大长度(ui 选择匹配)

    我想要一个额外的属性 就像从 ui select match 传递的 Placeholder 一样 我想设置选择输入的最大长度 我可以通过 select min js 添加属性 maxlength 设置它 但我认为对 lib 进行更改 文件
  • 更新电子邮件验证状态而不重新加载页面

    在我的网络应用程序中注册后 我将用户重定向到一个页面 告诉他验证他的电子邮件 一旦他这样做了 我想自动检测验证状态的变化 然后更改页面 沿着这些思路 auth user subscribe user gt if user user emai
  • WsFederation 身份验证登录循环

    我在使用时遇到登录循环问题WsFederation Authentication在我的 MVC Web 应用程序中 我使用 Visual Studio 创建 Web 应用程序的脚手架并设置WsFederation in the Startu