TARS 的服务鉴权功能|避免数据泄露

作者 Eaton

导语

在我们使用微服务架构时,经常会选择通过 RPC 通信框架方便地实现服务间的调用。但方便的同时也带来了一些安全隐患,任何用户都能够访问对外公开的接口,可能造成部分敏感数据的泄露,这是我们不希望看到的,怎么避免呢?这要求我们对访问的用户进行鉴别,因此我们需要一个细化到服务的鉴权访问机制。本文将介绍 TARS 的服务鉴权及其使用方法。

什么是鉴权

鉴权是指验证用户或服务是否具有访问系统的权利。对于部分公开的接口,我们并不希望所有用户或服务都能够访问,只希望特定的对象能够访问,因此我们需要鉴别访问接口的用户或服务的身份,确保访问的对象是我们希望的,保证接口的安全,这就是鉴权。

鉴权一般可分为用户鉴权和服务鉴权。

  • 用户身份鉴权通常依赖于用户系统,需要在业务代码中实现,实现方式有很多种,取决于具体的业务需求和使用的用户系统。

  • 服务鉴权则是对调用方服务的鉴别,确保只有特定的服务或客户端能够调用该服务。

TARS 服务鉴权

TARS 提供了一个强大的 RPC 框架,你只需要得到被调用方的 TARS 协议文件,就可以使用TARS框架编码,请求被调方服务。同时 TARS 框架中还提供了一个细化到服务的鉴权访问机制,通过账号密钥对的形式,使被调服务能够对调用方进行鉴别。

接下来我们以 TarsCpp为例,通过一个实例来看看如何在 TARS 中使用服务鉴权。

服务准备

我们需要准备两个服务,一个是被调服务,一个主调服务。

被调服务 TestServer

首先我们创建一个被调服务,应用名为 TestApp,服务名为 TestServerObj 名为 Test,如下

/usr/local/tars/cpp/script/cmake_tars_server.sh TestApp TestServer Test

生成如下文件

TestServer
├── build
├── CMakeLists.txt
└── src
    ├── CMakeLists.txt
    ├── Test.h
    ├── TestImp.cpp
    ├── TestImp.h
    ├── TestServer.cpp
    ├── TestServer.h
    └── Test.tars

然后修改 Test.tars 文件,定义一个 test 接口,传入一个字符串 input,返回一个字符串 output

module TestApp
{
   

interface Test
{
   
    int test(string input, out string output);
};

};

接着,在 TestImp.cpp 接口实现文件中,添加接口实现,如下

int TestImp::test(const string &input, string 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值