C# ASP.NET Core中的认证与授权 – JWT Bearer入门

在ASP.NET Core中实现JWT认证需配置服务、签发Token并验证签名。1. 在Program.cs中通过AddAuthentication().AddJwtBearer()注册JWT支持,设置密钥、ValidIssuer、ValidAudience等参数;2. 登录成功后构建Claim数组,使用JwtSecurityTokenHandler生成带有效期和签名的Token并返回;3. 控制器使用[Authorize]限制访问,未标注则允许匿名;4. 支持角色需Token包含role声明,自定义策略通过AddAuthorization().AddPolicy()定义;5. 前端请求必须携带”Authorization: Bearer “头,格式错误或过期将导致401。整个流程依赖密钥安全与配置一致性。

c# asp.net core中的认证与授权 - jwt bearer入门

在 ASP.NET Core 中实现 JWT Bearer 认证,核心是配置服务、签发 Token、验证签名,并结合授权策略控制访问。不复杂但容易忽略细节。

配置 JWT Bearer 认证服务

Program.cs 中注册认证服务,指定密钥、颁发者、受众等参数,确保与签发 Token 时一致:

使用 AddAuthentication().AddJwtBearer() 添加 JWT 支持 密钥必须是 symmetric security key(如从字符串生成的 SigningCredentialsValidIssuerValidAudience 要和 Token 中的 issaud 字段严格匹配 建议启用 ValidateLifetimeValidateIssuerSigningKey(默认开启)

签发 JWT Token 的基本流程

用户登录成功后,手动创建并返回 Token。关键步骤包括:

构建 ClaimsIdentity 或直接准备 Claim[](如 new Claim(ClaimTypes.Name, "user1")) 用 SecurityTokenDescriptor 设置有效期(Expires)、签名凭证、issuer/audience 通过 JwtSecurityTokenHandler 创建并 WriteToken() 输出字符串 通常以 {"token": "xxx"} 形式返回给前端

在控制器中使用 [Authorize] 控制访问

认证通过后,[Authorize] 才能生效。注意几个常见情况:

未加 [Authorize] 的接口默认允许匿名访问 加了但没配置认证方案?会报 401 或 500 —— 检查 AddAuthentication() 是否调用、顺序是否在 UseAuthentication() 之前 想限制特定角色?用 [Authorize(Roles = "Admin")],前提是 Token 中包含 role 声明且名称匹配(如 new Claim(ClaimTypes.Role, "Admin")) 自定义策略?用 AddAuthorization().AddPolicy() 配合 [Authorize(Policy = "MyPolicy")]

前端请求记得带 Authorization Header

客户端必须在请求头中提供 Token,格式固定:

Authorization: Bearer (注意中间有空格) 大小写敏感:必须是 Bearer,不是 bearerJWT Token 过期或签名无效 → 返回 401;格式错误(如缺空格)→ 可能 401 或静默失败,取决于中间件配置

基本上就这些。JWT 是无状态认证的常用选择,只要密钥安全、时间窗口合理、Claim 设计清晰,就能稳定支撑多数业务场景。

以上就是C# ASP.NET Core中的认证与授权 – JWT Bearer入门的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1442659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 19:15:48
下一篇 2025年12月8日 10:32:02

相关推荐

发表回复

登录后才能评论
关注微信