ASP.NET Core 使用多种身份验证方法

2024-01-29

同时使用 Cookie 身份验证中间件和 JWT 身份验证中间件。 当我登录用户时,我创建自定义声明并将其附加到基于 cookie 的身份。我还从外部源获取一个 jwt 令牌,它有自己的声明(我使用此令牌来访问外部资源)。 启用身份验证时,我的控制器类看起来像这样

[Authorize(AuthenticationSchemes = AuthSchemes)]
public class MixedController : Controller
// Requires the following imports:
// using Microsoft.AspNetCore.Authentication.Cookies;
// using Microsoft.AspNetCore.Authentication.JwtBearer;
private const string AuthSchemes =
    CookieAuthenticationDefaults.AuthenticationScheme + "," +
    JwtBearerDefaults.AuthenticationScheme;

根据上面的代码片段,如果 Cookie 或 JWT 身份验证成功,则请求被视为已通过身份验证。我的要求是,如果 Cookie 身份验证或 JWT 身份验证失败,则拒绝请求。对于我的情况来说,仅使用一种模式并不是一个好的选择。如果我的 cookie 有效但我的令牌已过期,我想以“未经过身份验证”为由使请求失败。我怎样才能做到这一点?


使用基于策略的身份验证。在那里您可以检查当前是否ClaimsPrincipal (context.User) has 2 Identities, 每个成功通过的身份验证方案 1 个。配置策略

services.AddAuthorization(options =>
{
    options.AddPolicy("RequireAllSchemes", policy =>
    {
        policy.AddAuthenticationSchemes(CookieAuthenticationDefaults.AuthenticationScheme);
        policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme);
        policy.RequireAuthenticatedUser();
        policy.RequireAssertion(context =>
        {
            return context.User.Identities.Count() == 2;
        });
    });
});

指定控制器的授权策略

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

ASP.NET Core 使用多种身份验证方法 的相关文章

  • 我可以在 psycopg2 中使用 md5 身份验证吗?

    经过两个小时的阅读文档 源代码和帮助线程后 我放弃了 我无法让 psycopg2 使用 md5 字符串进行身份验证 根据this http bytes com topic python answers 42597 psycopg authe
  • 尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现错误 500.19 和 0x8007000d

    我有一个在 IIS Express 中运行良好的 ASP NET Core 应用程序 同样 如果我通过命令行启动应用程序dotnet run 一切顺利 C Code Sandbox IisTestApp IisTestApp gt dotn
  • 如何在 ASP.NET Core 中设置 cookie validateInterval?

    我正在尝试设置validateInterval对于 ASP NET 5 RC1 应用程序 它使用ASP NET Identity 3 我正在尝试实现代码this https stackoverflow com questions 33463
  • 如何使用多重身份验证 - firebase?

    我有一个注册屏幕 其中包含 用户名 电子邮件 电话号码 密码 在本例中 我使用电话号码身份验证来验证号码 因此在用户验证他的号码后 我将他的数据保存到 firebase DB 中 所以在那之后 我将下摆导航到登录屏幕 应该包含电子邮件 密码
  • AWS Cognito / 从子节点获取用户信息

    我有一个使用 AWS Cognito AWSMobileClient 的工作 iOS 应用程序 用户可以使用 AWSAuthUI 登录和登录 注销 接下来我想做的是 拥有另一个用户的子 例如 7y873ff7 u9h4k 我想从其他用户那里
  • 在 Swift 中解码 JSON Web 令牌

    尝试在 Swift 中解码 JWT 有效负载 但遇到了很大的困难 static func decodePayload tokenstr String splitting JWT to extract payload let arr spli
  • 特殊字符被 tomcat cookie 解析器拒绝

    当我尝试将 cookie 从 android 代码发送到服务器端代码时 cookie 解析器不接受值字段中的 字符 即 tomcat 的 cookie 解析器在将 mime 标头解析为 cookie 时拒绝此字符 我尝试使用其他特殊字符代替
  • 一个 Guice 就绪的安全框架?

    有没有人见过一个为与 Guice 一起工作而编写的框架 或者一个将现有安全系统 即 Acegi 与 Guice 集成的库 到目前为止我发现了以下内容 http code google com p warp security http cod
  • ASP.NET Core MVC防伪

    尝试在核心 mvc 项目中打开防伪功能 但没有成功 做了什么 添加过滤器以自动检查每个 POST 请求的防伪令牌 services AddMvc o gt o Filters Add new AutoValidateAntiforgeryT
  • 安全 Cookie?

    我正在慢慢地将我的 未发布的 CMS 从 SESSION to COOKIE 互联网上的内容似乎更偏向于 SESSION 我认为是因为易于使用 我正在寻找有关保存 cookie 的安全提示 目前 我正在以以下格式存储 有点类似于 WordP
  • 是否可以从 .apk 文件获取 Android.mk 或本机源文件?

    看来从 apk文件中获取Java源文件是很容易的 但是否有可能得到Android mk or native通过工具或棘手的方法从 apk 文件中获取源文件 我正在研究 Android 应用程序本机代码安全性 因此这些文件对我来说非常重要 谢
  • 如何从 Main 中获取 IConfiguration?

    以下仅用于说明目的 我有一个secrets json包含以下内容 Message I still know what you did last summer 我需要使用以下播种器为数据库播种 public static class Seed
  • 在docker中使用MySQL数据库设置aspnetcore

    我正在尝试设置一个 docker compose 文件 其中包含 asp net core mysql 数据库和 phpmyadmin 的容器 设置我的 mysql 服务器没有问题 我可以使用 phpmyadmin 访问它 我的 asp n
  • 如何使用过滤器进行输出编码以防止XSS?

    我在 servlet 中使用以下代码 protected void doGet HttpServletRequest request HttpServletResponse response throws ServletException
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • SSLContext 初始化

    我正在看JSSE参考指南 我需要获取一个实例SSLContext为了创建一个SSLEngine 所以我可以使用它Netty以启用安全性 获取实例SSLContext I use SSLContext getInstance 我看到该方法被重
  • 遭受xss攻击后如何恢复站点?

    最近我正在研究XSS攻击以及它们对网站的破坏性有多大 让我惊讶的是 网络 even SO 充满了关于如何防止xss攻击但没有相关资源说明如何在网站受到 xss 攻击后恢复网站 我遇到过一些事情 比如 将备份网站代码上传回服务器 下载整个网站
  • Visual Studio Code 调试默认 ASP.NET Core MVC WebApp:不起作用

    我正在使用 Manjaro linux 并尝试调试默认的 ASP NET Core MVC 项目 但调试停止 没有任何错误 我创建了该项目 dotnet new mvc in a Meow文件夹 没什么特别的 然后添加了新的配置 NET C
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 使用 Vaadin Flow Web 应用程序处理全局所有布局和“路由”URL 的登录

    Vaadin 8 在 Vaadin 8 中 在我的UI子类我通过检查用户的会话是否带有一个属性来处理登录 该属性表明他们是否已成功登录 如果没有的话 我的UI子类显示登录布局 而不是带有导航选项的其他内容 例如菜单栏和在该 UI 内切换布局

随机推荐

  • kubectl exec 到多容器 pod 的容器中

    我在登录多容器 Pod 的一个容器时遇到问题 我从以下位置获取容器 IDkubectl describe pod
  • Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型

    As per 本文 http symfony com doc current cookbook form create custom field type html在 Symfony 文档上 我创建了一个自定义字段类型 将其设置为servi
  • 视图框架在 viewWillAppear: 和 viewDidAppear: 之间变化

    我在我的应用程序中发现了一个奇怪的行为 其中连接IBOutlet在我的视图控制器中的调用之间有其连接的视图框架viewWillAppear and viewDidAppear 这是我的相关代码UIViewController子类 void
  • 如何使用PHP连接sql server

    我想使用PHP连接到sql server数据库 我安装了 xampp 1 7 0 php 5 2 和 SQLSRV20 我已将扩展添加到php ini我收到此错误 Warning mssql connect function mssql c
  • 如何在 vim 中使用 ctags 自动完成

    我尝试在vim中开发android项目 但是发现在ctags中查找一种方法有点无聊 有没有办法使用ctags在vim中显示自动完成列表 thanks 这是我的 ctags 版本如下 Exuberant Ctags 5 8 Copyright
  • 如何在 WireMock 中成功代理 HTTPS 端点?

    我正在编写一个内部使用 WireMock 的 HTTP 记录播放代理 并且在记录 HTTPS 目标时遇到问题 HTTP 站点工作正常 以下是我为未加密站点设置 WireMock 代理的方法 java jar var proximate wi
  • 了解每个线程的 cuda 堆内存限制

    这个问题是关于cuda中堆大小限制的 访问了有关该主题的一些问题 包括这个 内核中的新运算符 奇怪的行为 https stackoverflow com questions 13072624 new operator in kernel s
  • 将 Spring Security JspTagLib 添加到 Freemarker 模板 - 控制器单元测试的问题

    我已将 Springs jsp 安全标记库添加到 freemarker 模板中 因为我使用 freemarker 而不是 jsps 来查看我的 Web 应用程序 对于任何寻找如何设置它的人 我发现添加 spring 库以使用 JSP Tag
  • 多层感知器 - 寻找“分离”曲线

    使用单层感知器 很容易找到 分隔线 我不知道专业术语 的方程 即根据感知器的权重在训练后将两种类型的点分开的线 在多层感知器中 如何以类似的方式找到分隔两种类型点的曲线 不是直线 方程 thanks 这只是尝试获得分离边界或曲线的近似值 D
  • React Native:通过本机模块获取设备名称,无需回调

    我想使用本机模块而不使用外部库来获取 iOS 设备名称 根据 React Native 的文档 React Native 桥是异步的 因此将结果传递给 JavaScript 的唯一方法是使用回调或发出事件 然而 文档还解释说 您可以将常量导
  • 在c#中使用oledb获取Excel数据范围

    我想通过使用 oledb 获取 Excel 工作表使用的数据范围 代码如下 String strExcelConn Provider Microsoft Jet OLEDB 4 0 Data Source E DOTNET CrsMicro
  • 外部车把模板骨干木偶

    在我的应用程序中 我添加了 Marionette sync 插件并覆盖这些方法 Backbone Marionette TemplateCache prototype loadTemplate function templateId cal
  • 具有重复组的正则表达式

    我一直在尝试匹配连字符之间的短语 我意识到我可以轻松地拆分连字符并取出短语 但我的等效正则表达式无法按预期工作 我想了解原因 只是我对短语的定义 只是非捕获空格分隔的连字符 so 正在捕获连字符或行尾 最后 整个内容用括号括起来 量词匹配多
  • AngularJs + ServiceStack 应用程序的安全性

    我有一个前端有四个模块的应用程序 我试图在前端尽可能多地使用 AngularJs 我正在使用一个空的网站 asp net 项目来托管所有文件和 REST serviceStack 我的项目具有以下结构 web config global a
  • ReactJS中子父组件通信

    我喜欢在事件触发时将属性 property props state 值从子组件发送到父组件onDrag 我找不到这方面的正确文档 这是我的代码 jsx React DOM var APP React createClass getIniti
  • jQuery:将 TextArea 内容转换为 html 字符串,反之亦然

    我想做的是将 TextArea 内容转换为有效的 html 代码 假设您在 TextArea 内键入内容 然后按下一个按钮 该按钮会在元素内显示键入的文本 如果您在 TextArea 中输入类似内容 嗨伙计 你喜欢 jQuery 吗 I d
  • Sphinx 过滤器 - 过滤器属性之间可以有“OR”吗?

    我正在使用 sphinx 列出数据库中的一些项目 几乎100 我只是还没弄清楚如何创建一个OR两个不同的过滤器之间 例如 我在数据库中的对象有开始日期和结束日期 我可以filter starting date x y and filter
  • jquery-file-upload 插件:如何更改上传路径?

    我正在尝试使用 blueimp jquery file upload 插件 似乎是一个很好的上传器 但文档没有帮助 当我使用可下载的演示脚本时 一切正常 但是 当我想更改上传路径时 这不起作用 我尝试在index php中更改操作路径 如下
  • Iterable> 无法确认函数中的泛型 T

    这是我的问题 const iterable 1 2 3 function flat
  • ASP.NET Core 使用多种身份验证方法

    同时使用 Cookie 身份验证中间件和 JWT 身份验证中间件 当我登录用户时 我创建自定义声明并将其附加到基于 cookie 的身份 我还从外部源获取一个 jwt 令牌 它有自己的声明 我使用此令牌来访问外部资源 启用身份验证时 我的控