返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.net core api接口JWT方式认证Token
  • 826
分享到

.net core api接口JWT方式认证Token

2024-04-02 19:04:59 826人浏览 泡泡鱼
摘要

一、项目>管理Nuget包 安装 二、.appsettings.JSON添加 "Jwt": { "Secret": "~!@#$%^&*()_+qwert

一、项目>管理Nuget包 安装

二、.appsettings.JSON添加


"Jwt": {
    "Secret": "~!@#$%^&*()_+qwertyuiopasldkh[o51485421ajshk^%*)kasd", // 密钥
    "Issuer": "kfjdhf", // 颁发者
    "Audience": "kfjdhf", // 接收者
    //"Expired": 30 // 过期时间(30min)
  }

三、ConfigureServices注入jwt


 #region 注册JWT
 
            //获取配置文件
            var JWTConfig = Configuration.GetSection("JWT");
            //生成密钥
            var symmetricKeyAsBase64 = JWTConfig.GetValue<string>("Secret");
            var keyByteArray = Encoding.ASCII.GetBytes(symmetricKeyAsBase64);
            var signingKey = new SymmetricSecurityKey(keyByteArray);
 
            //认证参数
            services.AddAuthentication("Bearer")
                .AddJwtBearer(o =>
                {
                    o.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuerSigningKey = true,//是否验证签名,不验证的画可以篡改数据,不安全
                        IssuerSigningKey = signingKey,//解密的密钥
                        ValidateIssuer = true,//是否验证发行人,就是验证载荷中的Iss是否对应ValidIssuer参数
                        ValidIssuer = JWTConfig.GetValue<string>("Iss"),//发行人
                        ValidateAudience = true,//是否验证订阅人,就是验证载荷中的Aud是否对应ValidAudience参数
                        ValidAudience = JWTConfig.GetValue<string>("Aud"),//订阅人
                        ValidateLifetime = true,//是否验证过期时间,过期了就拒绝访问
                        ClockSkew = TimeSpan.Zero,//这个是缓冲过期时间,也就是说,即使我们配置了过期时间,这里也要考虑进去,过期时间+缓冲,默认好像是7分钟,你可以直接设置为0
                        RequireExpirationTime = true,
                    };
                });
            #endregion

(2).Configure启用


app.UseAuthentication();//jwt

四、创建jwt帮助类


using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Text;
 
namespace Systemapi.JWT
{
        public class JwtHelper
        {
            public JwtHelper(IConfiguration configuration)
            {
                Configuration = configuration;
            }
            /// <summary>
            /// 配置属性
            /// </summary>
            public IConfiguration Configuration { get; }
            /// <summary>
            /// 生成Token
            /// </summary>
            /// <returns></returns>
            public string GenerateToken(List<Claim> claims)
            {
                var jwtConfig = Configuration.GetSection("Jwt");
                //秘钥,就是标头,这里用HMacsha256算法,需要256bit的密钥
                var securityKey = new SigninGCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtConfig.GetValue<string>("Secret"))), SecurityAlGorithms.HmacSha256);
                //Claim,JwtReGISteredClaimNames中预定义了好多种默认的参数名,也可以像下面的Guid一样自己定义键名.
                //ClaimTypes也预定义了好多类型如role、email、name。Role用于赋予权限,不同的角色可以访问不同的接口
                //相当于有效载荷
                List<Claim> baseClaims = new List<Claim>{
                new Claim(JwtRegisteredClaimNames.Iss,jwtConfig.GetValue<string>("Issuer")),
                new Claim(JwtRegisteredClaimNames.Aud,jwtConfig.GetValue<string>("Audience")),
                new Claim("Guid",Guid.NewGuid().ToString("D")),
                new Claim(ClaimTypes.Role,"admin"),
             };
                claims = claims.UNIOn<Claim>(baseClaims).ToList<Claim>();//合并Claim,删除重复项目
 
                SecurityToken securityToken = new JwtSecurityToken(
                    signingCredentials: securityKey,
                    expires: DateTime.Now.ADDDays(1),//过期时间
                    claims: claims
                );
                //生成jwt令牌
                return new JwtSecurityTokenHandler().WriteToken(securityToken);
            }
        }
    }

五、测试登录成功把账户信息存进token


 /// 登录
        /// </summary>
        /// <returns>登录</returns>
        [HttpGet]
 
        public ReturnJson login(string name, string pwd)
        {
            
            User data = bll.login(name, pwd);
            if (data!=null)
            {
                if (data.name == name && data.passWord == pwd)
                {
                    List<Claim> claims = new List<Claim>() {
                    new Claim(ClaimTypes.NameIdentifier, data.name),
                    new Claim(ClaimTypes.Role,data.AdminId.ToString()),
                    new Claim("AdminRole",data.AdminId.ToString())
                    };
                    string token=jwtHelper.GenerateToken(claims);
 
                     return new ReturnJson<string>().Success(token);                  
                    
                };
              
            }
            return new ReturnJson().Fail();
        }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: .net core api接口JWT方式认证Token

本文链接: https://lsjlt.com/news/159741.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • .net core api接口JWT方式认证Token
    一、项目>管理Nuget包 安装 二、.appsettings.json添加 "JWT": { "Secret": "~!@#$%^&*()_+qwert...
    99+
    2024-04-02
  • .net core api接口如何实现JWT方式认证Token
    这篇文章主要介绍.net core api接口如何实现JWT方式认证Token,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、项目>管理Nuget包 安装二、.appsettings.js...
    99+
    2023-06-22
  • .Net Core授权认证方案JWT(JSON Web Token)初探
    一、前言 现在越来越多的项目或多或少会用到JWT,为什么会出现使用JWT这样的场景的呢? 假设现在有一个APP,后台是分布式系统。APP的首页模块部署在上海机房的服务器上,子页面模...
    99+
    2024-04-02
  • .Net Core如何授权认证JWT
    这篇文章主要讲解了“.Net Core如何授权认证JWT”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net Core如何授权认证JWT”吧!一、前言现在越来越多的项目...
    99+
    2023-07-02
  • .NET Core支持Cookie和JWT混合认证、授权的方法
    目录前言Cookie认证JWT认证滑动过期思考扩展总结前言 为防止JWT Token被窃取,我们将Token置于Cookie中,但若与第三方对接,调用我方接口进行认证、授权此时仍需将...
    99+
    2024-04-02
  • ASP.NET Core应用JWT进行用户认证及Token的刷新方案
    目录一、什么是JWT?为什么要使用JWT?二、JWT的组成:HeaderPayloadSignature三、认证流程四、应用实例认证服务User相关:TokenHelper:应用服务...
    99+
    2024-04-02
  • .NET Core怎么实现Cookie和JWT混合认证、授权
    本篇内容介绍了“.NET Core怎么实现Cookie和JWT混合认证、授权”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言为防...
    99+
    2023-06-26
  • 基于.Net Core认证授权方案之JwtBearer认证
    目录一.前言二.Bearer认证三.JWT四.开始1. 注册认证服务2.接口资源保护3. 生成Token五. 运行六.扩展说明1、Basic基础认证2、Digest摘要认证七.注意八...
    99+
    2024-04-02
  • 学历认证API接口
    概述 学历认证在现代社会已经成为了不可或缺的一部分,然而传统的学历认证方式存在繁琐、耗时、低效等问题。为了解决这些问题,我们开发了一种基于学信网验证码的学历认证API接口。 API介绍 该API接口可以快速提取用户提交的学历证书电子注册备案...
    99+
    2023-08-31
    php
  • 怎样使用Jwt身份认证保护 Asp.Net Core Web Api
    怎样使用Jwt身份认证保护 Asp.Net Core Web Api,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。网络上有许多资源可以教你如何保护ASP.NET...
    99+
    2023-06-19
  • ASP.NET Core使用JWT认证授权的方法
     demo地址: https://github.com/william0705/JWTS 名词解析 认证 : 识别用户是否合法 授权: 赋予用户权限 (能访问哪些资...
    99+
    2022-06-07
    net 授权 jwt ASP.NET 方法 core ASP
  • springsecurity基于token的认证方式
    目录前言基于token的表单登录基于token的短信验证码登录基于token的社交登录简化的OAuth的授权改造标准的OAuth授权改造关于用户的绑定之前的社交登录绑定用户自定义pr...
    99+
    2024-04-02
  • api认证方式有哪些
    API认证方式有以下几种:1. 基本认证(Basic Authentication):使用用户名和密码进行认证。2. OAuth认证...
    99+
    2023-06-14
    api认证
  • SpringBoot集成Spring security JWT实现接口权限认证
    1、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> ...
    99+
    2024-04-02
  • 使用JWT在PHP API接口中进行身份验证的方法
    在 Web 开发中,最常见的需求之一就是用户身份验证。为了实现安全的身份验证,Web 开发者可以依赖于许多不同的机制。其中一种很受欢迎的方法是 JSON Web Tokens(JWT),它提供了一种基于令牌的身份验证方法。 在本...
    99+
    2024-01-22
    API PHP jwt
  • 如何在Spring Boot中利用JWT进行接口认证
    本篇文章为大家展示了如何在Spring Boot中利用JWT进行接口认证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。jwt(json web token)用户发送按照约定,向服务端发送 Heade...
    99+
    2023-05-31
    springboot jwt wt
  • springsecurity如何实现基于token的认证方式
    这篇文章主要为大家展示了“springsecurity如何实现基于token的认证方式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“springsecurity如何实现基于token的认证方式”...
    99+
    2023-06-20
  • Oracle中两种认证方式:OS认证与口令文件认证
    相关链接:SYS,SYSTEM,DBA,SYSDBA,SYSOPER的区别与联系    首先谈谈Oracle安装与OS用户组.Oracle在安装和维护过程...
    99+
    2024-04-02
  • 身份证实名认证API接口有什么意义与作用?
    身份证实名认证API接口有什么意义?   中国公民的身份证是一种对外证明自己身份的有效证件,随着国家对实名制要求的落实,工作与生活中许多场景都会需要进行身份验证。比如出门外出乘座火车与飞机时、注册互联网络平台时、网络游戏与购物时等等,都得用...
    99+
    2023-09-30
    数据库 php 大数据 eclipse mvc
  • tp6+jwt实现token生成及验证,tp+vue请求接口header中加入token报跨域错误解决
    生成、验证token 原文:TP6 JWT Token 生成 控制器使用 中间件使用 使用compose安装jwt类 (在cmd中切换至tp项目文件夹中运行一下命令,运行成功后会在vendor目录中生...
    99+
    2023-09-25
    vue.js php 前端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作