zoukankan      html  css  js  c++  java
  • 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安全注意的点,有了个简单的实现。


    数据库内的审计日志


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


     

    结束

  • 相关阅读:
    以puppeteer抓取微指数,puppeteer基本示例,docker部署headless
    kubernets基于容器日志的报警和服务自动恢复
    mysql truncate 的问题
    kubernets轻量 contain log 日志收集技巧
    用logstash 作数据的聚合统计
    编译安装 logstash-output-jdbc
    技术沙龙记录1
    javascript的几个知识点scoping,execution context, hoisting, IIFE
    TDD 测试驱动开发
    css及HTML知识点
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11910506.html
Copyright © 2011-2022 走看看