码迷,mamicode.com
首页 > 编程语言 > 详细

Spring cloud微服务安全实战-3-10API安全机制之授权_batch

时间:2019-11-22 12:02:01      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:pre   身份认证   调整   不能   客户   res   miss   401错误   alt   

说一下最后一个模块,授权。用来做访问控制,控制哪个用户能干什么。哪个用户不能干什么?

遵循最小的授权原则,一个用户只给他必须要的那些权限。

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方法。根据请求的方法来判断当前有没有权限。
技术图片
技术图片

如果是get请求,我的permisson里面有r
技术图片

如经过不是get请求,就判断
技术图片
首先是限流,先输出一个1
技术图片
认证输出2
技术图片
审计日志
技术图片

访问控制输出4
技术图片

配置拦截器

生效的顺序是按照add的顺序
技术图片

启动服务测试

没有传身份认证信息
技术图片

技术图片
返回的就是代码这里的提示
技术图片


传入用户jojo1
技术图片

技术图片
提示没有写的权限
技术图片

改成jojo2。这是一个有读写权限的用户
技术图片

技术图片
返回200,说明认证授权机制基本上已经生效了。
技术图片

api安全注意的点,有了个简单的实现。


数据库内的审计日志
技术图片

输出的拦截器的执行顺序问题。也是按照我们想要的顺序这么来执行的。 
技术图片

 

结束

Spring cloud微服务安全实战-3-10API安全机制之授权_batch

标签:pre   身份认证   调整   不能   客户   res   miss   401错误   alt   

原文地址:https://www.cnblogs.com/wangjunwei/p/11910506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!