美文网首页
ServiceComb认证与鉴权(一)

ServiceComb认证与鉴权(一)

作者: JW费心思 | 来源:发表于2020-06-12 13:56 被阅读0次

    一般来说,服务中心注册的服务,消费者可以无障碍的调用生产者。也就是说,默认是没有接口认证与鉴权的。关乎这方面的需求,servicecomb也提供了相关的实现方法。

    本文介绍两种实现方式, 自带的RSA认证以及servicecomb-fence组件认证

    RSA认证方法

    用户可以通过简单的配置,开启服务间的RSA认证,以保障服务接口的安全性。具体操作如下:

    1. 引入依赖

    <dependency> 
    <groupId>org.apache.servicecomb</groupId> 
    <artifactId>handler-publickey-auth</artifactId> 
    </dependency>
    

    2. 设置配置项

    消费者:

    servicecomb:
      handler:
        chain:
          Consumer:
            default: auth-consumer
    

    生产者:

    servicecomb:
      handler:
        chain:
          Provider:
            default: auth-provider
    
    1. 微服务启动时, 生成密钥对,并将公钥上传到service-center中
    2. 消费者在访问提供者前,使用私钥对消息进行签名
    3. 提供者从service-center获取消费者公钥,并对消息进行校验

    3. 启动并测试服务

    采用samples中的BMI例子来测试,该例子分为consumer和provider,consumer提供身高和体重,经过provider提供的计算方法,得到具体的BMI结果,返回到consumer并展示在前端节点。


    如果将consumer的auth-consumer的handler去掉,就可以看到,由于缺少认证,请求会失败 认证失败

    4. RSA认证

    根据公钥认证描述,服务在往服务中心注册时,会生成密钥对并上传密钥,不过我找了一圈服务的日志,并没有密钥生成和上传日志,反而找到如下日志,显示说key文件不存在?warning日志就不管了? 那不行!

    2020-06-12 01:42:05.620  WARN 23920 --- [           main] o.a.s.foundation.vertx.VertxTLSBuilder   : keyStore [server.p12] file not exist, please check!
    2020-06-12 01:42:05.621  WARN 23920 --- [           main] o.a.s.foundation.vertx.VertxTLSBuilder   : trustStore [trust.jks] file not exist, please check!
    2020-06-12 01:42:05.666  WARN 23920 --- [           main] o.a.s.foundation.vertx.VertxTLSBuilder   : keyStore [server.p12] file not exist, please check!
    2020-06-12 01:42:05.666  WARN 23920 --- [           main] o.a.s.foundation.vertx.VertxTLSBuilder   : trustStore [trust.jks] file not exist, please check!
    
    

    根据资料keytool生成证书 ,我在环境上生成了相关证书,主要命令如下:

    //会在root目录生成trust.jks, 如果不指定名字,默认.keystore
    keytool -genkeypair -keystore trust.jks
    
    //使用keytool将jks格式转换为p12格式
    keytool -importkeystore -srckeystore /root/trust.jks -destkeystore /root/server.p12 -deststoretype pkcs12
    

    将生成的两个文件,也就是上述warning日志提示的两个文件trust.jksserver.p12复制到项目的resources目录下
    再次启动服务....
    发现日志还是提示文件不存在。 纳尼?
    由于项目对于RSA认证不是很急迫,暂时先不再深究了。

    关于另一种实现auth的方法,下篇文章会记录

    相关文章

      网友评论

          本文标题:ServiceComb认证与鉴权(一)

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