Asp.net core MVC + HMAC 实现API请求认证,用户认证与授权,Web Token认证

JWT在.NET Core中的认证实践与安全配置 JSON Web Token(JWT)作为一种轻量级的认证机制,在现代Web开发中因其无状态、跨域支持等特性被广泛应用。其核心原理是通过数字签名(如HS256或RS256算法)确保Token的完整性和安全性,采用标准化的Header.Payload.Signature结构实现信息自包含。在技术价值层面,JWT显著降低了服务端会话存储压力,提升了系统扩展性,同时简化了前后端协作流程。典型的应用场景包括API认证、微服务间通信以及单点登录系统。在.NET Core生态中,通过Microsoft.AspNetCo 阅读详情
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    // Add HMAC authentication
    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = "HMAC";
        options.DefaultChallengeScheme = "HMAC";
    })
    .AddHMACAuthentication(options =>
    {
        options.SecretKey = "your_secret_key";
    });

    // Add JWT token authentication
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,
                ValidIssuer = "http://example.com",
                ValidAudience = "http://example.com",
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_jwt_secret_key"))
            };
        });

    // Add authorization
    services.AddAuthorization(options =>
    {
        options.AddPolicy("AdminOnly", policy => policy.RequireRole("Admin"));
    });
}

// Controllers/AccountController.cs
[Route("api/[controller]")]
[ApiController]
public class AccountController : ControllerBase
{
    [HttpPost("login")]
    public IActionResult Login(LoginModel model)
    {
        // Authenticate user and generate JWT token
        var token = GenerateJwtToken(model.Username, model.Password);
        return Ok(new { token });
    }

    private string GenerateJwtToken(string username, string password)
    {
        // Implement user authentication logic here
        // and generate a JWT token
        var claims = new[]
        {
            new Claim(ClaimTypes.Name, username),
            new Claim(ClaimTypes.Role, "Admin")
        };

        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_jwt_secret_key"));
        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

        var token = new JwtSecurityToken(
            issuer: "http://example.com",
            audience: "http://example.com",
            claims: claims,
            expires: DateTime.Now.AddMinutes(30),
            signingCredentials: creds);

        return new JwtSecurityTokenHandler().WriteToken(token);
    }
}

// Controllers/PingController.cs
[Route("api/[controller]")]
[ApiController]
public class PingController : ControllerBase
{
    [HttpGet]
    [Authorize]
    public IActionResult Get()
    {
        return Ok("Pong!");
    }

    [HttpGet("admin")]
    [Authorize(Policy = "AdminOnly")]
    public IActionResult GetAdmin()
    {
        return Ok("Admin Pong!");
    }
}

这个示例演示了如何在 ASP.NET Core MVC 应用程序中实现以下安全功能:

  1. HMAC 认证: 客户端使用 HMAC 签名的 API 请求,服务端验证签名。
  2. JWT 认证: 用户登录后,服务端生成 JWT token 并返回给客户端,客户端在后续请求中携带 token。
  3. 基于角色的授权: 使用 Authorize 和 AuthorizePolicy 特性控制对特定操作的访问权限。

客户端在登录时获取 JWT token,并在后续的 API 请求中携带 token。对于需要管理员权限的操作,客户端需要在请求头中包含有效的 HMAC 签名。

该示例涵盖了 API 安全的核心要素,可以作为一个良好的起点,根据具体需求进行进一步扩展和定制。

// login.component.ts
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Router } from '@angular/router';

@Component({
  selector: 'app-login',
  template: `
    <form (ngSubmit)="onSubmit()">
      <label>
        Username:
        <input type="text" [(ngModel)]="username" name="username">
      </label>
      <label>
        Password:
        <input type="password" [(ngModel)]="password" name="password">
      </label>
      <button type="submit">Login</button>
    </form>
  `
})
export class LoginComponent {
  username: string;
  password: string;

  constructor(private http: HttpClient, private router: Router) {}

  onSubmit() {
    this.http.post('/api/account/login', { username: this.username, password: this.password })
      .subscribe((response: any) => {
        localStorage.setItem('token', response.token);
        this.router.navigate(['/']);
      });
  }
}

// app.component.ts
import { Component } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
  selector: 'app-root',
  template: `
    <button (click)="pingPublic()">Ping Public</button>
    <button (click)="pingAdmin()">Ping Admin</button>
  `
})
export class AppComponent {
  constructor(private http: HttpClient) {}

  pingPublic() {
    this.http.get('/api/ping').subscribe(
      (response) => console.log(response),
      (error) => console.error(error)
    );
  }

  pingAdmin() {
    const token = localStorage.getItem('token');
    const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);

    this.http.get('/api/ping/admin', { headers }).subscribe(
      (response) => console.log(response),
      (error) => console.error(error)
    );
  }
}

这个示例包含了前端的两个组件:

  1. LoginComponent: 显示登录表单,当用户提交表单时,向后端的 /api/account/login 端点发送 POST 请求,并将返回的 JWT token 保存到 localStorage。
  2. AppComponent: 显示两个按钮,分别调用公开的 /api/ping 端点和需要管理员权限的 /api/ping/admin 端点。对于需要认证的请求,会从 localStorage 中读取 JWT token,并将其添加到请求头中。

这个前端示例与之前的后端示例相呼应,演示了如何在 Angular 应用程序中实现 HMAC 认证和 JWT 认证,以及基于角色的授权。

客户端首先通过登录获取 JWT token,然后在后续的 API 请求中携带该 token。对于需要管理员权限的操作,客户端需要在请求头中包含有效的 HMAC 签名。

ASP.NET Core分片上传权限校验优化:中间件与过滤器实战 中间件是ASP.NET Core请求管道的核心机制,负责在请求生命周期中执行拦截、认证与上下文装配,而权限校验则是保障文件上传安全的关键防线。在视频文件夹这类大文件分片上传场景中,每个分片请求都独立触发鉴权,若采用传统数据库全量校验,极易造成性能瓶颈与安全漏洞。通过自定义中间件实现基于HMAC签名的无状态UploadTicket校验,结合ActionFilter完成细粒度的资源权限与审计,能在每个分片落盘前完成快速验证,同时保证归属合法性与越权防护。该方案兼顾性能与安全,适用于高并发、高安全等级的内网视频上 阅读详情

相关推荐

ASP.NET前后端用户安全管理技术全解析

本文系统介绍ASP.NET Core中用户管理的核心技术,涵盖注册登录、密码加密(PBKDF2)、JWT身份认证及AccessToken/RefreshToken机制。通过轻量级Web API项目演示,强调安全实践:密码明文不存储,使用加盐哈希;登录后生成带有效期的JWT令牌,结合短时效AccessToken与安全存储的RefreshToken实现无状态身份验证,提升系统安全性与用户体验。

lweiyue的专栏 122

11Web API安全措施(一)后端 - ASP.NET Core MVC

会在授权机构中进行身份信息注册(保存到数据库),然后应用程序将身份信息发送给授权机构。身份信息通过后,授权机构会返回Token给应用程序,应用程序请求资源时将Token一起发送,资源会通过授权机构验证Token,通过后会将资源返回给应用程序,从而实现Web API的安全。

weixin_44458540的博客 1272

[WebApi]ASP.Net Core 中使用JWT认证(3.1版本,5.0也可以使用)

ASP.Net Core 中使用JWT认证 JWT简单介绍 开始编码 JWT简单介绍 关于JWT网上有很多介绍,这里就不介绍了,本文主要以实现为主。 JWT由3部分构成: HEADER 、PAYLOAD 、SIGNATURE HEADER :包含token的元数据,主要是加密算法,和签名的类型,如下面的信息,说明了加密的对象类型是JWT,加密算法是HMAC SHA-256 {"alg":"HS256","typ":"JWT"} PAYLOAD :主要包含一些声明信息(claim),这些声明是key-v

德仔 1294

ASP.NET Core MVC 中实现 API 请求认证(使用 HMAC)、用户认证与授权以及 Web Token(JWT)认证

HMAC认证:通过计算消息的 HMAC 签名来验证请求的完整性。用户认证与授权:使用 JWT 进行认证,并通过授权验证用户身份。Web Token认证(JWT):通过生成和验证 JWT 来处理用户认证和授权。

极客神殿 1042

MATLAB 论文复现——基于虚拟储能的电动汽车充放电调度策略及激励评价

文章基于虚拟储能聚合体仿真模型优化电动汽车充放电调度,并采用复合权重评价电动汽车的充电激励。根据电动汽车灵活性和系统稳定性衡量其贡献大小,并通过模糊推理系统模拟用户的充电意愿,实现对电动汽车充电的引导和优化。[1]陈朔,胡昊,方慧敏,等.基于虚拟储能的电动汽车充放电调度策略及激励评价[J/OL].系统仿真学报,1-12[2024-07-24].https://doi.org/10.16182/j.issn1004731x.joss.23-1316.基于虚拟储能的电动汽车充放电调度策略及激励评价。

sjr1478的博客 363

数据中心——Vxlan基本概念1

东西流量指的就是横向流量-------例如:服务器与服务器之间交换流量南北流量指的就是纵向流量-------例如:客户端和服务器之间的流量以下主要是讲解业务平面的网络架构(一般业务平面就需要用到专用的数据中心交换机)

m0_49864110的博客 1万+

.NET Core 常用加密和Hash工具NETCore.Encrypt

前言 在日常开发过程中,不可避免的涉及到数据加密解密(Hash)操作,所以就有想法开发通用工具,NETCore.Encrypt就诞生了。目前NETCore.Encrypt只支持.NET Core ,工具包含了AES,DES,RSA加密解密,MD5,SHA*,HMAC*等常用Hash操作。 项目地址 https://github.com/myloveCc/NETCore.Encrypt 通...

weixin_30239339的博客 319

H3C-V7防火墙配置SSL VPN IP资源典型案例(华三)

H3C-V7防火墙配置SSL VPN IP资源典型案例(华三)

m0_68265458的博客 5160

C# .net core 使用HMAC-SHA1

为什么80%的码农都做不了架构师?>>> ...

weixin_34252686的博客 1488

解决RocketMQ中@Bean配置DefaultMQProducer时的MQClientException问题

本文针对Spring Boot整合RocketMQ时,因在@Bean配置中手动调用DefaultMQProducer的start()方法而引发的MQClientException问题,深入剖析了其根本原因在于生命周期管理冲突。文章提供了简洁有效的解决方案——移除手动启动,让Spring容器自动管理,并给出了完整的配置示例与生产环境最佳实践。

rnn9storyteller的博客 687

【地图模块算法】二维全局地图的开源方案及对比--gmapping、hector、karto、cartographer

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、gmapping算法建图【基于Raoo-Blackwellized粒子滤波(RBPF)算法】1.gmapping理论(1)gmapping的工作原理(2)gmapping的算法流程(3)gmapping论文理论2.gmappingROS工程框架解析(1)gmapping的功能包架构(2)gmapping订阅和发布的话题(3)gmapping算法建图参数(4)gmapping源码

qq_35635374的博客 3436

.NET Core 常用加密和Hash工具NETCore.Encryp

前言  在日常开发过程中,不可避免的涉及到数据加密解密(Hash)操作,所以就有想法开发通用工具,NETCore.Encrypt就诞生了。目前NETCore.Encrypt只支持.NET Core ,工具包含了AES,RSA加密解密,MD5,SHA*,HMAC*等常用Hash操作。 项目地址 https://github.com/myloveCc/NETCore.Encrypt 通过Nug

nobb111的博客 1378

使用 MATLAB/Simulink + Simscape Electrical 构建一个他励直流电机的启动与制动过程仿真模型

直流电机在工业控制、电动车辆、自动化设备中广泛应用。其中,他励直流电机(Separately Excited DC Motor)因其励磁绕组与电枢绕组分别供电,具有良好的调速性能和启动特性,常用于需要平稳启动和精确控制的场合。在实际应用中,电机的启动过程和制动过程对电网、机械系统以及电机本身都具有重要影响。因此,仿真分析他励直流电机的启动与制动特性,是电机控制设计的重要环节。本文将详细介绍如何使用构建一个他励直流电机的启动与制动过程仿真模型,并通过仿真分析其动态响应。本文详细介绍了如何使用构建一个。

amy_mhd的博客 231

揭秘ASP.NET Core 8身份认证机制:如何实现安全可靠的JWT鉴权方案

掌握ASP.NET Core 8 Web API开发实战精髓,深入解析JWT身份认证机制。涵盖Token生成、验证流程与安全策略配置,适用于前后端分离与微服务场景,实现高效可靠的用户鉴权方案,值得收藏。

FastProceed的博客 913

四非人的保研之路,2024(2025届)四非计算机的保研经验分享(西南交通、苏大nlp、西电、北邮、山软、山计、电科、厦大等)

本身我就是福建人,xmu 3小时就能到家,然后导这边毕业要求容易,不想读博,达到要求就能放实习,每周打卡35h,比较自由,遂考虑。北邮弱com,联系了蛮多老师,几乎都给了考核机会,面试的老师好几位都考核人工智能基础,会问你卷积的计算,问的还是蛮细的。当时结果是暂定,以为是稳了,遂没联系其他老师,但是之后询问发现只是候补,懒得联系其他老师,928候补到,放弃。东北大学,2000人大机试,入营点送,全国巡回面试,每个人就面不到10分钟,我就被问了3个问题就结束了,候补。科研组,导师有人脉,想读博出成果可以去。

专注于AI领域前沿知识,业余爱好开发软件 4351

MATLAB 与 STK 互联的两种连接方式详解

批量仿真推荐使用方法一;交互分析推荐使用方法二。可以根据具体任务灵活切换,也可以同时使用两种方式,提升建模与仿真的效率。

weixin_52370774的博客 1564

ASP.NET Core WebAPI中使用JWT Bearer认证和授权

为什么是 JWT BearerASP.NET Core 在 Microsoft.AspNetCore.Authentication 下实现了一系列认证, 包含 Cooki...

dotNET跨平台 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

.NET中JWT认证与授权机制深度解析

JWT(JSON Web Token)作为现代API安全的核心技术,通过Base64Url编码的头部、载荷和签名实现无状态认证。其核心原理是利用数字签名验证Token完整性,相比传统Session机制更适合微服务架构。在.NET生态中,结合C#的强类型特性,开发者可以通过Microsoft.AspNetCore.Authentication.JwtBearer包快速实现安全认证。JWT的技术价值在于简化分布式系统身份验证流程,同时支持基于声明的细粒度授权控制。典型应用场景包括跨域单点登录(SSO)、微服务间

weixin_34160277的博客 421

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

asp.net core集成JWT的步骤记录

【什么是JWT】 JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。 JWT的官网地址:https://jwt.io/ 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT令牌在api接口中校验用户的身份以确认用户是否有访问api的权限。 JWT中包含了身份认证必须的参数以及用户自定义的参数,JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。 【什么时候应该使用JSON Web令牌?】 授权:这是使用JWT的最常见方案。一旦用户登录,每个后续请

极客神殿 666

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ASP.NET Core分片上传权限校验优化:中间件+凭证验证

大文件上传是Web开发中的高频场景,分片上传技术通过将文件切分为多个小块,解决了内存限制和断点续传的难题,但同时带来了权限校验的复杂度。传统实现中每个分片都查询数据库,不仅性能低下,还容易留下安全漏洞。本文从权限校验的通用原理出发,介绍基于ASP.NET Core中间件的统一拦截方案:通过首片签发HMAC签名凭证、后续分片仅验签的方式,将数据库查询降为内存级签名验证,既大幅降低耗时,又严格保障上传安全。方案适用于国防、政企等高安全内网环境,也适用于任何需要高效可靠分片上传的Web系统,为视频、大文件上传场景

weixin_33462167的博客 210

【项目推荐】基于 SpringBoot3 + Spring AI 的游泳馆管理系统:Agent + RAG + Function Calling 一次学全

它不是玩具 Demo,而是一个「业务 + AI」双主线交织的真实系统——预约业务在跑,AI 客服在旁边实时查库作答,两条线通过 Function Calling、RAG、站内消息串成一体。面试官问「你做过什么 AI 项目」时,你能从业务场景讲到架构取舍,从 RAG 切分参数讲到降级兜底——这和「我调了一下 ChatGPT 的 API」是完全不同的两个段位。项目已包含完整的建表 SQL、初始化数据、部署文档,克隆下来就能跑。获取方式:见文末说明 / 后台回复关键词获取。—— 完 ——

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 336

2026小红书小工具怎么制作:纯前端 ZIP 打包、沙箱限制与笔记挂载流程

小红书小工具制作的核心不是复杂开发,而是把需求压缩成纯前端轻交互,并按平台要求完成 ZIP 交付。适合做的方向是测试、计算器、生成器、学习小测和记录工具;不适合做的方向是账号体系、云端数据、支付和远程接口。制作时先确认沙箱限制,再整理输入、计算、输出链路,最后通过 Builder Hub 提交审核并挂载笔记。在需求简单、素材较少的情况下,十几分钟做出一个可用的小工具是现实路径,袋马就是一个选择。

qq_39308835的博客 254

Spring AI 多模态实战(下):文生图 + TTS 语音合成(含 2.0 流式音频分片)

本文基于 Spring AI 2.0.1,实战文生图与TTS语音合成:通过ImageModel/ImagePrompt生成图片(返回URL或base64),用SpeechModel/SpeechPrompt实现文字转语音;重点介绍2.0流式音频分片技术,支持低延迟长文本播报;结合缓存、落盘、限流等策略控制生成成本,避免URL过期、音频格式错乱等常见坑点。附完整代码与踩坑指南,助力构建高效多模态应用。

weixin_43128865的博客 263

Agent 的 ReAct、Plan、Execute、Reflection 模式

本文系统解析 Agent 的 ReAct、Plan、Execute、Reflection 四模式,揭示其核心为“下一步谁定”与“错了怎么发现”两大问题。ReAct 逐步决策,适合动态环境但易冗余;Plan 一次性规划,高效却惧变化;Execute 严格落地,需明确判据与失败策略;Reflection 事后校验,强化纠错闭环。四者协同:外层规划,执行中嵌入思考,每步后反思,连续失败才重规划,构建稳定可控的智能体工作流。

2401_89855466的博客 313
上一篇: HMAC应用场景
下一篇: ASP.NET Core MVC 中实现 API 请求认证(使用 HMAC)、用户认证与授权以及 Web Token(JWT)认证
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值