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安全注意的点,有了个简单的实现。


数据库内的审计日志


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


 

结束

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