美文网首页
Spring cloud consul配置Acl

Spring cloud consul配置Acl

作者: MaxAlan | 来源:发表于2020-08-07 13:24 被阅读0次

原创文章,仅供学习参考。

转载请标明出处:https://www.jianshu.com/p/cda5e7a78d92

文章主题:记录Spring cloud consulacl-tokenJava项目的配置方式。

至于Acl是什么,通俗的理解就是管理Consul的认证用户、访问权限

如果之前没有了解过Consul acl的同学,需要先了解清楚,acl是什么,该如何激活及配置。

附上Consul官方文档地址:https://www.consul.io/api-docs

Acl配置文件最简单的Demo

{
  "acl" : {
    "enabled" : true,
    "default_policy" : "deny",
    "tokens" :{
        "master": "xxxxxxxxx-xxxxxxxxx-xaaaaaa"
    }
  }
}

配置说明:

  1. acl.enabled:boolean类型,是否开启Acl功能

  2. acl.default_policy:allowdeny,默认为allow

    allow:ACL是黑名单,允许任何未明确禁止的操作。

    deny:ACL是白名单,阻止任何未明确允许的操作。我这里设置了deny,表示需要通过认证才可以正常使用Consul。

  3. acl.tokens.master:最高权限的令牌密钥,字符串内容;

    与其他系统的Acl不同,一般都是通过设置账号、密码来认证用户。consul的就只是一个Token令牌,相当于密码,可以设置为一个随机的UUID。

    master只是其中一个类似管理员角色的策略节点,如果想设置其他节点token,可以通过设置policy后生成token。

当你重启Consul后,发现需要登录,如下图:

image-20200807130921097.png

用配置文件设置好的master的token登录就行。

这时候,Spring Cloud服务如果不配置AclToken会无法注册到注册中心,启动过程中会报错。

Exception:
OperationException(statusCode=403, statusMessage='Forbidden', statusContent='Permission denied')

com.ecwid.consul.v1.OperationException: OperationException(statusCode=403, statusMessage='Forbidden', statusContent='Permission denied')
    at com.ecwid.consul.v1.agent.AgentConsulClient.agentServiceRegister(AgentConsulClient.java:278) ~[consul-api-1.4.1.jar:na]
    at com.ecwid.consul.v1.ConsulClient.agentServiceRegister(ConsulClient.java:309) ~[consul-api-1.4.1.jar:na]
    at org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry.register(ConsulServiceRegistry.java:67) [spring-cloud-consul-discovery-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry.register(ConsulServiceRegistry.java:42) [spring-cloud-consul-discovery-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:239) [spring-cloud-commons-2.2.2.RELEASE.jar:2.2.2.RELEASE]

很明显,提示没有权限,无法注册服务,操作异常。

SpringBoot项目配置文件添加Acl配置

yml文件配置方式

spring:
  cloud:
    # 注册中心Spring Cloud Consul
    consul:
      discovery:
        # 设置acl token值
        acl-token: xxxxxxxxx-xxxxxxxxx-xaaaaaa

properties文件配置方式

spring.cloud.consul.discovery.acl-token=xxxxxxxxx-xxxxxxxxx-xaaaaaa

设置好对应的Token后,项目可以顺利启动,并注册到Consul。

相关文章

网友评论

      本文标题:Spring cloud consul配置Acl

      本文链接:https://www.haomeiwen.com/subject/xtdfdktx.html