在 ASP.NET MVC 5 应用程序中启用 SSL 会导致 OpenIdConnectProtocolValidator 问题

2024-02-25

我有一个针对 Azure Active Directory 进行身份验证的 ASP.NET MVC 5 应用程序。我想在整个应用程序上启用 SSL。因此利用全局过滤器如下:

public class FilterConfig
{
    /// <summary>
    /// Registers the global filters.
    /// </summary>
    /// <param name="filters">The filters.</param>
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new RequireHttpsAttribute());
    }
}

之后,我还将项目属性中的“启用 SSL”设置为 true。这给了我以下 SSL URL ->https://本地主机:34567 https://localhost:34567。我更新了该项目,使其位于“项目 URL”中服务器下“Web 选项卡”下的 IIS Express 路径中。但是,在运行该网站时,我遇到以下错误:

IDX10311:RequireNonce 为“true”(默认),但validationContext.Nonce 为空。无法验证随机数。如果您不需要检查随机数,请将 OpenIdConnectProtocolValidator.RequireNonce 设置为“false”。

我有授权。在网站上启用。我使用 Azure Active Directory。

安全码如下:

app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri                    
            });

        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Audience = audience,
                Tenant = tenant,      
            });

授权。值是从 web.config 读取的,如下所示:

<add key="ida:ClientId" value="<some_guid>" />
<add key="ida:Audience" value="https://localhost:34567/" />
<add key="ida:AADInstance" value="https://login.windows.net/{0}" />
<add key="ida:Tenant" value="microsoft.onmicrosoft.com" />
<add key="ida:PostLogoutRedirectUri" value="https://localhost:34567/" />

我尝试按照错误消息中的指示将 RequireNonce 设置为 false,如下所示:

ProtocolValidator = new OpenIdConnectProtocolValidator
                {
                    RequireNonce = false
                }

但这只是导致了无效请求错误。

有人可以帮我理解这里的问题是什么吗?在启用 SSL 之前,一切都运行良好。


如果错误消息以 OICE_20004 开头或包含 IDX10311,您可以忽略异常。注意:这样做的风险由您自己承担。

Notifications = new OpenIdConnectAuthenticationNotifications()
{
    RedirectToIdentityProvider = (context) =>
    {
        // Ensure the URI is picked up dynamically from the request;
        string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Uri.PathAndQuery;
        context.ProtocolMessage.RedirectUri = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Uri.PathAndQuery;
        context.ProtocolMessage.PostLogoutRedirectUri = appBaseUrl;
        return Task.FromResult(0);
    },
    AuthenticationFailed = (context) =>
    {
        if (context.Exception.Message.StartsWith("OICE_20004") || context.Exception.Message.Contains("IDX10311"))
        {
            context.SkipToNextMiddleware();
            return Task.FromResult(0);
        }
        return Task.FromResult(0);
    },
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 5 应用程序中启用 SSL 会导致 OpenIdConnectProtocolValidator 问题 的相关文章

随机推荐

  • 在一个可执行文件中使用 C# 编写的可自删除应用程序

    是否可以用 C 创建一个应用程序 使其能够在某种情况下删除自身 我需要为我的应用程序编写一个更新程序 但我不希望在更新过程后留下可执行文件 有一个官方的 Net OneClick 但由于与我的 HTTP 服务器不兼容以及 OneClick
  • Python 3 imaplib.fetch TypeError:无法将字节连接到 int

    我有一些代码可以获取 IMAP 电子邮件 并且在 Python 2 中运行得很好 在 Python3 中 我收到以下错误 回溯 最近一次调用最后一次 文件 mail py 第 295 行 位于项目 返回消息 x 文件 mail py 第 1
  • Windows 服务如何确定其 ServiceName?

    我查了一下 找不到一个简单的问题 Windows 服务如何确定其启动的 ServiceName 我知道安装可以破解注册表并添加命令行参数 但从逻辑上讲 这似乎是这样should没有必要 所以才有这个问题 我希望比注册表黑客更干净地运行单个二
  • 如何删除 pandas 数据框中具有负值的所有行?

    我有一个混合了列数据类型 float64 和对象的数据框 我需要动态删除所有具有负值的行 这是我到目前为止所拥有的 df df df gt 0 all axis 1 但因为有些列不是数字 所以它基本上会擦除整个 df 我怎样才能构建这个只考
  • 安装unf_ext(0.0.7.2)时出错,Bundler无法继续

    我试图将 diaspora 安装到本地主机中 我删除了Gemfile lock文件并尝试过bundle install我看到了这个 这些是我已经尝试过的事情 ARCHFLAGS Wno error unused command line a
  • Terraform 抛出“groupName 无法与参数子网一起使用”或“VPC 安全组不能用于非 VPC 启动”

    当试图弄清楚如何配置aws instance使用 AWS VPC 时会发生以下错误 Error launching source instance InvalidParameterCombination The parameter grou
  • 用于创建新元素的突变观察者

    我试图在创建特定 div 时使函数关闭 用最简单的话来说 我有这样的事情 a href Click me a 之前 我让突变事件监听 div bar 的创建 像这样 bar live DOMNodeInserted function eve
  • 程序集绑定重定向和代码分析

    我在 Visual Studio 2010 的 Mvc 3 0 0 0 项目中使用 DotNetOpenAuth 引用 System Web Mvc 版本 1 0 0 0 我正在使用程序集绑定重定向 如下所示
  • 使用 Flex 生成的文件时出现问题

    我正在尝试设置一个使用 flex 的项目 fast lex 而不是 adobe 我在 Ubuntu 上运行 并通过 apt get 方法安装了 flex 我用谷歌搜索了编译错误 我要么找到了围绕它创建自己的补丁的人 要么找到了很多论坛 人们
  • 如何简单地显示 YQL 的 xml 输出或将 JSON 输出为 html

    因此 我一直在研究一种从页面中抓取数据并显示它的方法 以与源格式大致相同的格式 我发现了 YQL 我发现它很棒 除了我不知道如何显示整个输出 没有什么特别的 除了基本格式 YQL输入代码为 select from html where ur
  • Python:无法分配给文字

    我的任务是编写一个程序 要求用户输入 5 个名称并将其存储在列表中 接下来 它随机选择这些名字之一 并宣布该人为获胜者 唯一的问题是 当我尝试运行它时 它说can t assign to literal 这是我的代码 import rand
  • 是否可以找到当前正在使用的 tmux 套接字?

    我正在尝试获取当前正在使用的 tmux 套接字列表 但到目前为止我想出的最佳解决方案是签入 tmp tmux 或 TMPDIR 据我所知 即使当前没有 tmux 会话正在使用这些套接字 tmux 也会将这些套接字保留一段时间 因此 我希望有
  • Django 表单未使用 ModelChoiceField 保存 -foreignkey

    我的网站上有多个表单 可以将信息保存到我的 PostgreSQL 数据库中 我正在尝试创建一个表单来保存我的设置模型的信息 class Set models Model settitle models CharField Title max
  • 没有在 DLL 项目中创建 WPF 窗口?

    Visual Studio 不允许我在 DLL 项目中创建 WPF 窗口是否有原因 我通过在应用程序项目中创建一个窗口并将其复制到我的 DLL 项目来 解决 这个问题 我还发现我可以创建一个 UserControl 并将基类更改为 Wind
  • 连接 Java 和 Python Flask

    我有一个简单的 Flask API from flask import Flask jsonify app Flask name app route def hello world return Hello World app route
  • 如何通过批处理文件执行cmd命令?

    我想编写一个批处理文件 它将按给定顺序执行以下操作 Open cmd 运行cmd命令cd c Program files IIS Express 运行cmd命令iisexpress path C FormsAdmin Site port 8
  • 在 Android 上隐藏 Toast

    我正在开发一个应用程序 它使用系统活动将联系人添加到手机内存中 此外部活动在保存联系人后启动 Toast 有没有可能摆脱它 如果我可以获得对它的引用来调用 cancel 或取消所有排队的 Toast 那就完美了 有Toast管理器吗 如果您
  • 将字体大小调整为绘图设备的大小

    我经常遇到必须调整输出图像大小的情况 不幸的是 这意味着通常我必须调整字体大小 以使内容可读 例如 如果下面的图 library ggplot2 library tibble library stringi set seed 1 df lt
  • django - 限制用户数量

    对不起我的英语不好 只有一个问题 是否有任何方法可以限制 Django 应用程序中可以创建的用户数量 我搜索了很多地方 只找到了这个 但我在仓库中看到最后一次更新是 3 年前https github com 1stvamp django l
  • 在 ASP.NET MVC 5 应用程序中启用 SSL 会导致 OpenIdConnectProtocolValidator 问题

    我有一个针对 Azure Active Directory 进行身份验证的 ASP NET MVC 5 应用程序 我想在整个应用程序上启用 SSL 因此利用全局过滤器如下 public class FilterConfig