.NET 云原生架构师训练营(模块二 基础巩固 安全)--学习笔记

2.8 安全

  • 认证 VS 授权

  • ASP .NET Core 认证授权中间件

  • 认证

  • JWT 认证

  • 授权

认证 VS 授权

  • 认证是一个识别用户是谁的过程

  • 授权是一个决定用户可以干什么的过程

  • 401 Unauthorized 未授权

  • 403 Forbidden 禁止访问

ASP .NET Core 认证授权中间件

在接收到请求之后,认证(Authentication)和授权(Authorization) 发生在 路由(Routing) 和 终结点(Endpoint) 之间

执行过程

认证

认证是一个识别用户是谁的过程

代码示例

Web api jwt authentication

在 LighterApi 项目的 Startup.cs 中配置添加服务

ConfigureServices

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options => options.TokenValidationParameters = new TokenValidationParameters{ValidateIssuer = true, // 是否验证 IssuerValidateAudience = true, // 是否验证 AudienceValidateLifetime = true, // 是否验证失效时间ClockSkew = TimeSpan.FromSeconds(30),ValidateIssuerSigningKey = true, // 是否验证 SecurityKeyValidAudience = "https://localhost:6001",ValidIssuer = "https://localhost:6001",IssuerSigningKey =new SymmetricSecurityKey(Encoding.UTF8.GetBytes("secret88secret666")) // 拿到 SecurityKey});

Configure

app.UseAuthentication();
app.UseAuthorization();

添加标签 [Authorize]

[Authorize]
public class ProjectController : ControllerBase

通过 postman 调用接口,返回 401 Unauthorized

需要通过登录接口获取 token,再带上 token 访问

JWT 认证

  • 什么是 JWT

  • 颁发 token 代码示例

什么是 JWT

JWT 是一个 token,由三部分组成,格式为 xxx.yyy.zzz

  • Header(algorithm + type)

  • Payload(claims)

  • Singature

颁发 token 代码示例

namespace LighterApi.Controller
{[ApiController][Route("api/[controller]")]public class IdentityController : ControllerBase{[HttpPost][Route("signin")]public IActionResult SignIn(){var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("secret88secret666"));var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);var token = new JwtSecurityToken(issuer: "https://localhost:6001",audience: "https://localhost:6001",new List<Claim> {new Claim("name", "mingson")},expires: DateTime.Now.AddMinutes(120),signingCredentials: credentials);return Ok(new JwtSecurityTokenHandler().WriteToken(token));}}
}

启动程序,访问接口,获取 token

通过官网解析

带上 token 访问接口

授权

为接口添加访问需要的角色,具备角色才能访问

[Authorize(Roles = "Administrators, Mentor")]

SignIn 接口返回 token 中加入角色

new Claim(ClaimTypes.Role, "Administrators"),

启动程序,获取包含角色的 token

带上 token 访问需要角色的接口

GitHub源码链接:

https://github.com/MINGSON666/Personal-Learning-Library/tree/main/ArchitectTrainingCamp/LighterApi

课程链接

.NET云原生架构师训练营讲什么,怎么讲,讲多久

欢迎各位读者加入微信群一起学习交流,

在公众号后台回复“加群”即可~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从Banner入手保护linux系统服务器

一&#xff0c;ftp服务Banner修改法&#xff1a; wu-ftp修改 用十六进制文本编辑器修改/usr/sbin/in.ftpd文件&#xff0c;找到如下几行&#xff1a;/var/log/lastlogCould not write %.100s:%.100sVersion wu-2.6.1-16改成&#xff1a;Microsoft FTP Service(Version.6…

java超长字符序列化_String 字符串最长可以有多长?

Java技术栈www.javastack.cn打开网站看更多文章String 类可以说是在 Java 中使用最频繁的类了&#xff0c;就算是刚刚接触 Java 的初学者也不会陌生&#xff0c;因为对于 Java 程序来说&#xff0c;main 方法就是使用一个 String 类型数组来作为参数的(String[] args)。对于这样…

一文读懂 AVL 树

背景AVL 树是一棵平衡的二叉查找树&#xff0c;于 1962 年&#xff0c;G. M. Adelson-Velsky 和 E. M. Landis 在他们的论文《An algorithm for the organization of information》中发表。所谓的平衡之意&#xff0c;就是树中任意一个结点下左右两个子树的高度差不超过 1。&am…

欧几里得范数_从范数到正则化

范数是一个在数学领域中常用的工具&#xff0c;同时也是学习机器学习原理中经常碰到的概念。本文将从范数的定义出发&#xff0c;逐步带你理解其在机器学习中的应用。首先需要明确的是&#xff0c;范数是一个函数&#xff0c;在机器学习中我们通常用它来衡量向量的大小。 范数定…

C++ 自定义调试信息的输出

自定义调试信息的输出调试信息的输出方法有很多种, 例如直接用printf, 或者出错时使用perror, fprintf等将信息直接打印到终端上, 在Qt上面一般使用qDebug&#xff0c;而守护进程则一般是使用syslog将调试信息输出到日志文件中等等...使用标准的方法打印调试信息有时候不是很…

IdentityServer4之持久化很顺手的事

前言原计划打算在春节期间多分享几篇技术文章的&#xff0c;但到最后一篇也没出&#xff0c;偷懒了吗&#xff1f;算是吧&#xff0c;过程是这样的&#xff1a;每次拿出电脑&#xff0c;在孩姥姥家的院子总有阳光沐浴&#xff0c;看不清屏幕&#xff0c;回屋又有点冷(在强行找理…

java获取下周一整周的日期_获取Java中日期范围内的所有星期五

我最近遇到了一个任务,我必须在一个日期范围内获得所有星期五.我写了一小段代码,很惊讶看到一些奇怪的行为.以下是我的代码&#xff1a;public class Friday {public static void main(String[]args){String start "01/01/2009";String end "12/09/2013"…

手写体识别代码_Python识别图片中的文字

一、前言不知道大家有没有遇到过这样的问题&#xff0c;就是在某个软件或者某个网页里面有一篇文章&#xff0c;你非常喜欢&#xff0c;但是不能复制。或者像百度文档一样&#xff0c;只能复制一部分&#xff0c;这个时候我们就会选择截图保存。但是当我们想用到里面的文字时&a…

递推与储存,是动态规划的关键

小智最近由于项目需要&#xff0c;经常要接触到一些规划类的问题。那今天就给大家讲一讲旅行商问题及其解法吧。旅行商问题&#xff0c;即TSP问题&#xff08;Travelling Salesman Problem&#xff09;。问题是&#xff0c;有一个旅行商人要拜访n个城市&#xff0c;每个城市只能…

SQL 标量值函数的调用

调用 MS SQL 标量值函数&#xff0c;应该在函数前面加上 "dbo."&#xff0c;否则会报 “不是可以识别的 内置函数名称”错误。例如 DECLARE WhichDB TINYINT; SELECT WhichDB dbo. user_GetWhichDB(1);--看看是哪个数据库的 另外&#xff0c;标量值函数就相当于…

dotnet core TargetFramework 解析顺序探索

dotnet core TargetFramework 解析顺序测试Intro现在 dotnet 的 TargetFramework 越来越多&#xff0c;抛开 .NET Framework 不谈&#xff0c;如果一个类库支持多个 TargetFramework 应用实际运行的时候会使用哪个版本的 API 呢&#xff0c;之前一直都是想当然的自以为是了&…

java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...

转载请注明出处&#xff1a;http://blog.csdn.net/xdz78#include #include //查找单链表中的特定元素&#xff0c;《数据结构与算法——c语言描述》 3.11 答案int count;//全局变量自动初始化为0int m;//需要查找的元素大小typedef struct student {int data;struct student *n…

python调用robotframework_robotframework+python接口自动化的点滴记录(2)

1.在循环体内&#xff0c;赋值语句的前后名称不能一样&#xff0c;否则在跑循环的第二次时就会报错&#xff1a;TypeError: not all arguments converted during string formatting这样写是错的&#xff1a;${设置计划接口_请求body} string format ${设置计划接口_请求body}…

这种感觉真爽

今天接到客户的修改需求&#xff0c;说了一大段话&#xff0c;然后我们开始讨论解决方案。最后自己来负责前台的修改。看了六七个小时的代码&#xff0c;最后修改了一行。达到了要求。想起了以前课文中学到的一句话&#xff1a;画一条线1美元&#xff0c;知道在哪里画这条线999…

大数据时代,掌握数据分析需要做到这几点

这些年来&#xff0c;随着进入大数据时代&#xff0c;各行各业均有一个词频频被提到&#xff0c;那就是数据分析。那么数据分析究竟是什么呢&#xff1f;数据分析就是指用适当的统计分析方法对收集来的大量数据进行处理分析&#xff0c;提取有用信息并形成结论&#xff0c;从而…

93.7%的程序员!竟然都不知道Redis为什么默认16个数据库?

背景在实际项目中redis常被应用于做缓存&#xff0c;分布式锁/消息队列等。但是在搭建配置好redis服务器后很多朋友应该会发现和有这样的疑问&#xff0c;为什么redis默认建立了16个数据库&#xff0c;16个数据库的由来redis是一个字典结构的存储服务器&#xff0c;一个redis实…

python tablewidget 颜色_QT中,QTableView鼠标移动到item上时该item所在行的背景颜色变成其他颜色,这要怎么实现...

展开全部//不解释&#xff0c;自己看。不保证完整&#xff0c;仅供思路参考#include #include "TableView.h"#include #include int main(int argc, char *argv[]){QApplication a(argc, argv);QStandardItemModel model;for ( int col 0; col {QList list;for ( in…

java8 垃圾 不同_【不同的Java垃圾回收器的比较】

现在已经是2014年了&#xff0c;但是对大多数开发人员而言有两件事情仍然是个谜——java垃圾回收以及异性(码农又被嘲笑了)。由于我对后者也不是特别了解&#xff0c;我想我还是试着说说前者吧&#xff0c;尤其是随着Java8的到来&#xff0c;这个领域也发生了许多重大的变化及提…

。。。第一次。。。

记得第一次给你发短信。。问你。。数据结构期末考试有没有范围啊。。没有告诉你。。那次只是给你发短信的借口。。记得第一次打电话给你。。问你。。那个。。什么什么。。的那道题。。你会做吗。。第一次在电话里听你的声音。。是那样的甜美。。记得第一次和安子。阿昆吃饭的时…

“一边熬夜一边求不要猝死”,90后养生朋克指南,条条扎心!

随着一批又一批的90后步入中年秃头、失眠、衰老...健康的压力如影如随是时候开始养生朋克了当代青年&#xff1a;养生朋克指南养生朋克一边作死一边自救的养生方式比如一边熬夜一边涂贵价护肤品用最贵的眼霜 熬最长的夜心理活动经常是&#xff1a;一边熬夜一边祈祷自己不要猝死…