Nacos的权限管理

本文详细探讨了Nacos的认证框架,包括使用@Secured注解实现资源访问控制,以及Spring Boot中的JWT认证过程。重点介绍了认证中心的实现方式和权限验证流程。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

系统的访问认证是维护系统安全,保障特定权限的用户的正确访问系统获取有效资源,因此对于系统添加认证是必须的。


一、Nacos认证框架

Nacos认证的框架主要是

二、框架研究

第一步:在controller中增加注解@Secured,标准当前controller的方式方式,访问的资源

第二步:添加过滤器,对注解@Secured进行权限的校验

具体的流程:

  1. 判断是否开启认证(否的开启直接放行)
  2. 判断是否内部服务调用(是的都是直接放行)
  3. 查询当前controller中的资源,是否存在资源名称,默认给空的情况下,当前都是通过反射创建ResourceParser对象去解析
  4. 通过权限认证中心:AuthManager ,完成权限认证

1.实现方式

nacos实现权限认证主要是通过注解,自定义@Secured,主要是访问资源的动作,资源名称(资源默认是空),以及解析资源三部分,对于资源解析提供了默认的DefaultResourceParser,对于其他类型的资源由具体的其他类通过实现ResourceParser接口完成。

@Retention(RetentionPolicy.RUNTIME)
public @interface Secured {
    
    /**
     * The action type of the request.
     *
     * @return action type, default READ
     */
    ActionTypes action() default ActionTypes.READ;
    
    /**
     * The name of resource related to the request.
     *
     * @return resource name
     */
    String resource() default StringUtils.EMPTY;
    
    /**
     * Resource name parser. Should have lower priority than resource().
     *
     * @return class type of resource parser
     */
    Class<? extends ResourceParser> parser() default DefaultResourceParser.class;
}
public class DefaultResourceParser implements ResourceParser {
    
    @Override
    public String parseName(Object request) {
        return StringUtils.EMPTY;
    }
}

注解controller

 @GetMapping
 @Secured(action = ActionTypes.READ, parser = ConfigResourceParser.class)
 public void getConfig(HttpServletRequest request, HttpServletResponse response,
            @RequestParam("dataId") String dataId, @RequestParam("group") String group,
            @RequestParam(value = "tenant", required = false, defaultValue = StringUtils.EMPTY) String tenant,
            @RequestParam(value = "tag", required = false) String tag)
            throws IOException, ServletException, NacosException {

}

2.权限认证中心

Nacos的认证主要使用的是Spring的生态框架

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  1. 登录
@Autowired
private JwtTokenManager tokenManager;

使用JWT的方式

  1. 认证鉴权

对于这块没有什么好讲的,这块也是学习spring-boot-starter-security的一种方式,这个是一个非常好的例子,是可以参考和借鉴的。

总结

Nacos的认证这块就是这么多,目前在自己学习写博客,比较粗鄙,在一步步学习中,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值