公钥认证

场景描述

公钥认证是ServiceComb提供的一种简单高效的微服务之间认证机制,它的安全性建立在微服务与服务中心之间的交互是可信的基础之上,即微服务和服务中心之间必须先启用认证机制。它的基本流程如下:

  • 微服务启动的时候,生成秘钥对,并将公钥注册到服务中心。
  • 消费者访问提供者之前,使用自己的私钥对消息进行签名。
  • 提供者从服务中心获取消费者公钥,对签名的消息进行校验。
    公钥认证需要在消费者、提供者都启用。
  1. servicecomb:
  2. handler:
  3. chain:
  4. Consumer:
  5. default: auth-consumer
  6. Provider:
  7. default: auth-provider

POM依赖:

  • 在pom.xml中增加依赖:
  1. <dependency>
  2. <groupId>org.apache.servicecomb</groupId>
  3. <artifactId>handler-publickey-auth</artifactId>
  4. </dependency>

配置黑白名单

基于公钥认证机制,ServiceComb提供了黑白名单功能。通过黑白名单,可以控制微服务允许其他哪些服务访问。目前支持通过配置服务属性来控制,配置项如下:

  1. servicecomb:
  2. publicKey:
  3. accessControl:
  4. black:
  5. list01:
  6. category: property ## property, fixed value
  7. propertyName: serviceName ## property name
  8. # property value match expression.
  9. # only supports prefix match and postfix match and exactly match.
  10. # e.g. hacker*, *hacker, hacker
  11. rule: hacker
  12. white:
  13. list02:
  14. category: property
  15. propertyName: serviceName
  16. rule: cust*

以上规则配置了黑名单,不允许微服务名称为hacker的访问;白名单,允许微服务名称为cust前缀的服务访问。

ServiceComb提供了trust-sample来演示黑白名单功能。