Spring cloud微服务安全实战-3-10API安全机制之授权
说一下最后一个模块,授权。用来做访问控制,控制哪个用户能干什么。哪个用户不能干什么?
遵循最小的授权原则,一个用户只给他必须要的那些权限。
1.你的请求是不是需要权限认证, 有一些请求是根本不需要权限控制的,比如说商品信息搜索和商品信息的查看。
401代表当前请求需要认证,但是你没认证,有可能是没携带身份认证信息,比如前面讲的HttpBasic认证,没有Autorization的头,这些情况都要返回401
2.有没有权限,没有权限返回403。
401错误,发请求的人可以调整请求的信息避免掉401的错误的。比如没带上身份证明,只要带上身份证明,那么这个401就不会返回给他了
当返回403的时候,不管客户端在这个请求上再去做任何的修改,都不会导致这个403可以过去。只有一种情况就是线下去找你的管理员,给他授权了,才能过这个403.
403应该被审计日志记录下来,这样可以看到谁在访问自己没有权限的东西。
权限控制的两种方式。
ACL比较常见在linux下用户的权限
ACL
用户直接和权限挂钩。加上权限的字段表,然后重启下服务,会自动把这个字段创建到数据内。
这样数据库内就有了这个字段。
给jojo1配置上度的权限r。给jojo2配置上读写的权限rw
写代码来控制权限
使用拦截器。所有的Filter都是在interceptor之前执行的。
覆盖preHandler方法。result是声明最终的结果,是过还是不过。默认都是让他过。
这个Interceptor是整个的四个机制的最后。首先要去拿当前的用户。所有的请求先都必须加身份认证。
获取请求,根据请求的方法来判断。
、
下面来写一个hasPermisson方法。根据请求的方法来判断当前有没有权限。
user类创建hasPermission的方法。判断有没有权限。
如果是get请求,我的permisson里面有r
如经过不是get请求,就判断是否有w也就是写的权限。
首先是限流,先输出一个1
认证输出2
审计日志
访问控制输出4
配置拦截器
生效的顺序是按照add的顺序
启动服务测试
没有传身份认证信息
返回的就是代码这里的提示
传入用户jojo1
提示没有写的权限
改成jojo2。这是一个有读写权限的用户。
注意这里创建的是jojo3.
返回200,说明认证授权机制基本上已经生效了。
api安全注意的点,有了个简单的实现。
数据库内的审计日志
输出的拦截器的执行顺序问题。也是按照我们想要的顺序这么来执行的。
结束
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2013-11-22 word excel 等导出相关操作
2013-11-22 Xenocode Postbuild 2010 for .NET 使用