做一视频网站多少钱,网站内容建设和管理,重庆双八自助建设网站,做采集网站的方法前言撸码需谨慎#xff0c;裸奔有风险。经常在一些技术交流群中了解到#xff0c;还有很多小伙伴的项目中Api接口没有做任何安全机制验证#xff0c;直接就裸奔了#xff0c;对于一些临时项目或是个人小项目还好#xff0c;其余的话#xff0c;建议小伙伴们酌情考虑都加上… 前言撸码需谨慎裸奔有风险。经常在一些技术交流群中了解到还有很多小伙伴的项目中Api接口没有做任何安全机制验证直接就裸奔了对于一些临时项目或是个人小项目还好其余的话建议小伙伴们酌情考虑都加上毕竟接口安全这事可大可小。通常会采用session、cookie、jwt、ids4等方式进行接口安全认证或授权这里就先拿jwt说事ids4知识点比较多后续单独整理整理对于session和cookie的方式就留给小伙伴们研究吧因为最近接触或是和朋友聊到的项目中使用的不多所以就不单独拿出来细说了。正文JSON Web Token (JWT)是一个开放标准(RFC 7519)它定义了一种紧凑的、自包含的方式用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任因为它是数字签名的。---官网翻译主要用于系统中授权认证使得在数据交换过程中通过Token方式进行校验相对比较安全而Token包含三部分每部分用点(.)进行拼接内容结构为Header.Payload.SignatureHeader(头)一个Json对象通过Base64URL算法将其转换为一个字符串。里面有两个属性alg和typ分别代表签名算法和生成token的类型。Payload(负载)一个Json对象通过Base64URL算法将其转换为一个字符串。里面默认有一些官方定义的信息也可以将自定义信息加入到其中但是由于不是加密的强烈不介意将敏感信息放在其中。默认属性大概如下iss (issuer)签发人exp (expiration time)过期时间sub (subject)主题aud (audience)接受方nbf (Not Before)生效时间iat (Issued At)签发时间jti (JWT ID)唯一编号Signature(签名)这个是对前两部分的内容进行签名需要一个秘钥再通过Header中指定的签名算法生成签名。比如指定算法为HMACSHA256时生成的签名为收理论知识就先提及这么多如果需要详细了解的可以进管网(https://jwt.io/introduction)瞅瞅英文版怕怕别啊翻译工具那么多应该难不倒小伙伴。接下来就通过代码演示方式说说jwt使用方式及涉及到的相关知识点吧。这里还是在上一篇文章的例子上进行举例演示(跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义)不是偷懒而是利用Swagger方便测试另外就是针对认证对Swagger进行一个小知识点的扩展。以上Swagger内容不是必须如果小伙伴不想用Swagger进行测试直接使用类似于Postman的工具也是可以的测试方式不冲突所以小伙伴们别跑咱们继续往下看↓↓↓使用组件的经典三步走安装包-注册组件-注册中间件jwt集成使用如下通过以上简单三步操作已经将Jwt集成到项目中接下来开始用它来保护我们的Api接口如上通过简单的在接口上增加[Authorize]特性就能保护起来啦现在只能带“身份证”才能玩了那系统中得有一个颁发身份证的地方供系统识别验证一般都会将其放在登录接口的地方当用户验证成功之后就生成对应的Token给客户端客户端拿着这个Token就可以当“身份证”来调用接口啦看如下代码这个错误应该是刚开始经常遇到的必须要求密钥是大于等于16个字符否则就会失败。修改密钥长度如下然后运行重新登录获取Token如下图可以看到上面代码中的公共信息部分应该提取到公共配置信息中不然要改几个地方所以在程序开发过程中小伙伴么尽量不要硬编码不然就等于给自己找维护工作。Token已经生成了那怎么用现在Swagger不支持输入Token可以使用postman类似的工具进行接口测试如下输入Token成功获取信息Token的使用本质其实是在Header中增加了一个Authorization头如下图Authorization中的值为Bearer Token中间一定要有一个空格。同理前端调用API接口的时候也是在请求头中增加Authorization即可。拿到Token就可以访问受保护的API了现在应该了解一下生成的Token是否和刚开始说的理论一样同时可以通过jwt官网进行解析查看具体内容通过官网解析看看内容通过上面得知没有经过业务加密的Token是可以进行解析的所以不建议把一些敏感信息放在Payload中。但是对于认证来说是安全因为校验签名是需要密钥的而密钥是存在服务器端一般人肯定是不知道的。对于Token的过期有一个点即过期滑动时间如果不设置默认是五分钟即当设置Token有效期到期时不会马上失效而是再过五分钟才失效如下例过了几分钟后还是没有过期如下过六分之后再访问发现Token才失效如果觉得过期滑动时间不满足需求可以进行设置如下这里运行效果就不截图了小伙伴试试吧 这里关于Jwt的集成先说这么多肯定是没有说完的还有权限验证那块单独整理一篇说吧内容也不少。Swagger小扩展既然都用到Swagger肯定是希望在Swagger上直接测试来来来继续往下看看↓↓↓在注册Swagger组件时进行相关配置运行结果如下点击小锁弹出框可进行Token输入输入Token授权之后就可以调用保护的接口可以很方便的进行测试这里就不截图演示了小伙伴们动手试试吧。附加知识点由于SecurityRequirementsOperationFilter默认将securitySchemaName 设置为oauth2所以在Swagger中加入描述的时候需要指定第一个参数为oauth2源码如下也可以换成其他方式参照实现的方式2两种方式差不多如下图注意点生成Token时的密钥大于或等于16个字符生成的Token中默认不加密敏感信息不要放入其中如果有需要可以将Token进行加密Token传输如果是外网建议用Https防止中途被拦截Token防止泄露可以将有效期设置短一点总结关于权限的验证单独再整理一篇分享这里就先到这吧旅游或回家的小伙伴们应该都回到自己的住处了吧好好休息休息又要开始撸码啦。一个被程序搞丑的帅小伙关注Code综艺圈识别关注跟我一起学~~~撸文不易莫要白瞟三连走起~~~~