使用 AspNet.Security.OpenIdConnect.Server 进行自定义生命周期验证 (ASP.NET vNext)

2023-12-05

我正在使用 Visual Studio 2015 Enterprise Update 1 和 ASP.NET vNext rc1-update1 来颁发和使用 JWT 令牌,如下所述here.

在我们的实现中,我们想要控制令牌生命周期验证。

我们尝试了几种方法,但所有方法都有不良副作用。例如,在一次尝试中,我们接管了 TokenValidationParameters.TokenValidationParameters.LifetimeValidator 事件配置 method:

app.UseJwtBearerAuthentication
(
    options => 
    {
        options.TokenValidationParameters = new TokenValidationParameters()
        {
            LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) =>
            {
                // Pretend to do custom validation
                return false;
            }
        };
    }
);

该事件导致验证失败,如我们所愿,但客户端收到 500 错误,而我们希望返回 400 系列错误和一个小的有效负载。

在另一次尝试中,我们尝试了 TokenValidationParameters.Events 的各种实现,例如检查 ValidatedToken 事件中的声明,但发现我们无法阻止中间件调用控制器操作,除非抛出异常,这让我们回到了 500 错误问题。

所以我的问题是:

  • 使用 OIDC 接管生命周期验证的最佳实践是什么?

  • 我们是否可以强制 OIDC 不要在代币中包含某些生命周期声明(例如“nbf”),因为我们无论如何都不需要它们?


编辑:此错误已在 ASP.NET Core RC2 中修复。不再需要此答案中描述的解决方法。


It's a 已知错误。可悲的是,您可以在 beta8 中使用的解决方法不再有效in RC1.

您唯一的选择是编写一个捕获异常的中间件,以防止服务器返回 500 响应。当然,它很丑陋,并且可能会隐藏重要的异常,但它是唯一已知的适用于 RC1 的解决方法。

这是一个示例(请确保在 JWT 承载中间件之前注册它):

app.Use(next => async context => {
    try {
        await next(context);
    }

    catch {
        // If the headers have already been sent, you can't replace the status code.
        // In this case, throw an exception to close the connection.
        if (context.Response.HasStarted) {
            throw;
        }

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

使用 AspNet.Security.OpenIdConnect.Server 进行自定义生命周期验证 (ASP.NET vNext) 的相关文章

  • MVC5 身份验证中“...与主域之间的信任关系失败”

    我有一个 ASP NET MVC5 应用程序not使用 Windows 身份验证 一切都工作正常 直到我尝试在正在开发的域之外运行应用程序并且 无论出于何种原因 得到 The trust relationship between this
  • 重写 ASP.Net Core 中的 415 响应

    在 ASP net Core 2 1 中 我想返回 Json 响应以及状态代码 415 而不是默认返回的 415 为了实现这一点 我使用资源过滤器 public class MediaTypeResouceFilter Attribute
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • 如何防止用户生成的 Sql 查询上的 Sql 注入

    我有一个项目 私有的 ASP net 网站 受 https 密码保护 其中要求之一是用户能够输入直接查询数据库的 Sql 查询 我需要能够允许这些查询 同时防止它们对数据库本身造成损坏 以及访问或更新它们不应该访问 更新的数据 我制定了以下
  • 实体框架中对象属性中的 NULL 值

    Tables Article Author Comment 1篇文章和1位作者可以有 评论 数据库中有 1 篇文章 1 位作者和 1 条评论 问题是 该代码 myBD my bd new myBD var articles by bd Ar
  • include 内的 ASP.net 代码不执行

    我已经很长时间没有涉足服务器端了 但在我看来 嵌入在包含的代码文件中的脚本应该正常执行 由于某种原因 情况似乎并非如此 注意 下面显然是一个基于我的调试尝试的简化实现 实际上 我在实际项目中还得到了其他包含平面 HTML 和 JavaScr
  • 当前上下文中不存在名称“DefaultAuthenticationTypes”

    我正在尝试在我的 Web 应用程序中实现基于角色的授权 如下所示 HttpPost ActionName Login public ActionResult Login LoginViewModel model if ModelState
  • 我们可以将哪些类型的对象放置在视图状态中?

    我想知道为什么我们必须设置可序列化属性才能将对象保存在视图状态 另外 我们可以在视图状态中存储哪种类型的对象 ViewState使用二进制序列化进行序列化对象状态格式化程序 http msdn microsoft com en us lib
  • 扩展授权属性

    我实施了 CustomAuthorization 属性基于 Authorize 属性 我的属性如下所示 public class CustomAuthorizeAttribute AuthorizeAttribute public eUse
  • EF Core - 可能会导致循环或多个级联路径

    我已经设置了一个我认为非常简单的数据库 但是我收到以下错误 在表 User 上引入 FOREIGN KEY 约束 FK User Suburb SuburbId 可能会导致循环或多个级联路径 指定 ON DELETE NO ACTION 或
  • UserControl 中的 Web 控件为空?

    我构建了一个小型用户控件 它本质上是一个 DropDownList 其中包含一些基于目标属性设置的预设值 这是代码 public partial class Selector System Web UI UserControl public
  • Application Insights 快照调试器:快照不是从 .NET 完整框架站点推送的

    我创建了一个全新的 Web 应用程序 NET Full Framework 4 7 2 添加了 Application Insights 快照收集器 但快照未推送到服务器 我什至没有得到Don t see the snapshot trou
  • 从服务帐户使用 Graph API 发送电子邮件

    我正在 ASP NET Core 5 C 中执行任务 需要使用 Graph API 发送电子邮件 我参考了以下文章并在 Azure 试用帐户上进行了配置 并且能够发送电子邮件 使用 NET 通过 Microsoft Graph 发送电子邮件
  • OData 实体属性序列化名称与 C# 变量名称不同

    在使用 OData 的 ASP NET Web API 中 我有一个 C 对象 描述允许在 filter 中使用的字段 说我想限制 filter支持仅 filter deviceId gt someValue 随后http www ben
  • 通过 JavaScript 单击按钮/页面提交

    我想了解 asp net 框架如何知道何时单击了按钮 因此一旦收到请求 就会在服务器上触发其单击事件 我需要了解它是如何工作的 因为我想从 JavaScript 触发按钮的服务器单击事件 我能够从 JavaScript 执行页面提交 doc
  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • 如何隐藏数据列表中的项目

    我想隐藏一个项目datalist根据某种条件起诉ItemBound how Wrap a PlaceHolder控制整个内容ItemTemplate 然后在 ItemDataBound 事件中 您可以执行以下操作 Protected Sub

随机推荐

  • Django 中的 MVC 模式

    这个问题已经困扰我有一段时间了 我读过有关这个主题的内容 但似乎没有什么能澄清我的想法 我知道他们称为视图模板 也称为模型模型 我真正不明白的是控制器在哪里 在我看来 django 所谓的视图更像是控制器的操作 方法 功能 而不是控制器本身
  • 修复 msysGit Portable $HOME 位置

    我已在闪存驱动器上成功安装并配置了 msysGit Portable 并使用它来拉取和推送 GitHub 存储库 然而 我似乎总是不得不拼凑 SSH 支持 具体来说 为了让 SSH 找到我的密钥文件 我必须遵循这些说明启动第二个实例ssh
  • 如何在 PyQt5 中叠加小部件?

    我想在包含图像小部件的背景布局上渲染一些布局 将一些小部件分组 让我用一张图片来解释一下 下图显示了所需的输出 但是 我还没有找到覆盖两个图像小部件的方法 它们显示如下 这是我写的Python代码 from PyQt5 QtWidgets
  • 获取指向非静态成员函数的函数指针

    假设我有一堂课 class A public A void myFunc 然后在程序中的不同点我创建类 A 的实例 并尝试获取指向的函数指针myFunc A a new A ATTEMPTS AT RETRIVING FUNCTION PO
  • 无法使用 Fancybox 获取要通过 AJAX 发布的表单数据

    我使用 Fancybox 在单击链接时弹出联系表单 然后它将表单数据 POST 到 php 文件 发出一封电子邮件并返回一条成功消息 在我提交表单后 页面重新加载 数据似乎无处可去 如果我在不使用 AJAX 的情况下提交表单 它可以正常工作
  • 登录页面无法正常工作

    当我第一次打开登录页面时 即使我使用正确的用户名和密码 登录页面也不会重定向到主页 但在第二次登录时 它被正确重定向到主页 login php 的代码如下所示 login php 的其余部分是简单的 html 登录表单数据被发送到 vali
  • PHP:从文件中读取特定行

    我正在尝试使用 php ini 从文本文件中读取特定行 这是文本文件 foo foo2 如何使用php获取第二行的内容 这将返回第一行 但我需要第二个 任何帮助将不胜感激 myFile 4 24 11 txt lines file myFi
  • Spring 3.0 / AOP / Aspectj:autoproxy拦截任何对 getConnection() 的调用

    我试图拦截对 getConnection 方法的任何调用来设置 dbms 标识符 我已经实现了一个方面来获取它 但我什么也没得到 任何想法 谢谢 import java sql CallableStatement import java s
  • 尽管调试已关闭,UI5 仍继续加载调试源

    我的 SAPUI5 应用程序通过以下方式使用模块SAP CDN 在 DevTools Network 选项卡中我看到发起者许多文件是调试版本 例如 jquery dbg js 我用 SAPUI5 诊断工具检查过 调试已禁用 No sap u
  • 检测并删除异常值作为管道的一个步骤

    我有一个问题 我正在尝试构建自己的类以放入 python 中的管道中 但它不起作用 我试图解决的问题是多类分类问题 我想做的就是在管道中添加一个步骤来检测和删除异常值 我找到了这个检测并删除管道Python中的异常值这与我所做的非常相似 这
  • 设置“float”作为单精度对象的存储模式

    我希望在 R 中将对象的精度显示为 浮点 同时具有单精度 目前它存储为默认类型 double timevector c 1 5 4 5 7 5 10 5 13 5 16 5 19 5 22 5 typeof timevector displ
  • 如何使用 BjyAuthorize 重定向到登录页面

    我想将一些页面重定向到登录页面而不是403页面 默认情况下 BjyAuthorize 将所有内容重定向到 403 页面 是否可以配置此行为 我找到了这个 重定向策略 我该如何使用这个 最后我得到了它 使用 BjyAuthorize 版本 1
  • 使用App Script获取电子表格的所有查看者

    我编写了用于在应用程序脚本中获取电子表格的所有查看者的代码 我使用 getViewers 方法来获取实际观看它的观众姓名 但该方法正在返回我实际共享电子表格的人员的姓名 有没有其他方法可以让我获得电子表格的所有查看者 有没有网络自动化工具可
  • struts2 让我发疯

    I have been trying to make a java project Its using Struts 2 tags There is a button Update whenever it is to be clicked
  • ASP.NET Core 身份验证 cookie 仅收到一次

    我正在使用 ASP NET Core 开发一个应用程序 并且正在使用自定义 Cookie 身份验证 我的CookieAuthenticationOptions are app UseCookieAuthentication new Cook
  • 即使图像较小,如何使 UITableViewCell ImageView 具有固定大小

    我有一堆图像用于单元格的图像视图 它们都不大于 50x50 例如40x50 50x32 20x37 当我加载表格视图时 文本没有对齐 因为图像的宽度不同 另外 我希望小图像出现在中间而不是左侧 这是我在 cellForRowAtIndexP
  • 将asp.net图像添加到div

    有没有一种方法可以动态地将 Image1 添加到下面代码中的 while 循环 包含在 div 中 我的意思是实际上将 asp 图像添加到 div 中 通过代码 目前 当我看到代码时 它会查找一个 asp 图像 但我没有看到可以将其 添加
  • 带有 Excel 文件的 OPENROWSET

    我想执行简单的语句 SELECT FROM OPENROWSET MICROSOFT JET OLEDB 4 0 Text Database C Temp SELECT FROM test csv 今天早上我突然收到这条消息 Msg 730
  • 从 cron 运行时,顶部命令输出为空

    我试图使用以下命令每 5 分钟重定向特定文件中的 TOP 命令输出 top b n 1 gt var tmp TOP USAGE csv date I M p d m Y rw r r 1 root root 0 Dec 9 17 20 T
  • 使用 AspNet.Security.OpenIdConnect.Server 进行自定义生命周期验证 (ASP.NET vNext)

    我正在使用 Visual Studio 2015 Enterprise Update 1 和 ASP NET vNext rc1 update1 来颁发和使用 JWT 令牌 如下所述here 在我们的实现中 我们想要控制令牌生命周期验证 我