# 鉴权功能

tars是一个强大的RPC框架，你只需要得到被调用方的tars协议文件，就可以使用tars框架编码，请求被调方服务。方便的同时也带来了一些安全隐患，如果我们的服务接口是敏感的，不希望敏感数据被随意请求访问。这样我们需要一个细化到服务的鉴权访问机制。 tars提供了这样的机制，你只需要设置账号密码，tars框架在网络层自动完成密码验证，对业务层完全透明。对于无法提供正确账号密码 的客户端，直接踢掉连接。

目前只有C++支持鉴权功能，java即将支持。

## tars鉴权使用

tars鉴权的使用非常简单，你不需要修改一行代码，只需要更改配置文件。 只需要按照下面三个步骤设置：

### 修改被调用方的endpoint，开启鉴权机制

在tars服务平台，选中需要启用鉴权的服务，编辑servant，修改endpoint，添加-e 1. -e及其参数表示是否开启鉴权，默认为0是不开启的，为1则是开启。

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-d090efc543c9c52bc2e60d7c67172dbbe7ed7a35%2Ftars_auth_endpoint.png?alt=media)

### 修改被调用方的配置文件添加账号密码

注意，被调用方可以有多个adapter，每个需要鉴权的adapter都有自己独立的账号密码。 如图，对test.oko.BertObjAdapter设置账号bert，密码123456：

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-1ca0638a2d3414bfd99c0bbab9e00f36c7861e4e%2Ftars_auth_server.png?alt=media)

由于截图不全，实际私有模板内容如下：

```
<tars>
  <application>
    <server>
        <test.oko.BertObjAdapter>
            accesskey=bert
            secretkey=123456
        </test.oko.BertObjAdapter>
    </server>
  </application>
</tars>
```

现在，在web平台重启服务。

### 修改调用方的配置文件添加账号密码

注意，调用方可以访问多个obj，每个需要鉴权的obj都有自己独立的账号密码。 如图，对test.oko.BertObj设置账号bert，密码123456：

![](https://211854462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LjKWVpRE8j8fOTPPSus%2Fuploads%2Fgit-blob-551262e47a55827de96d205f1bfc0d1933de1d5e%2Ftars_auth_client.png?alt=media)

由于截图不全，实际私有模板内容如下：

```
<tars>
  <application>
    <client>
        <test.oko.BertObj>
            accesskey=bert
            secretkey=123456
        </test.oko.BertObj>
    </client>
  </application>
</tars>
```

现在，在web平台重启调用方。

这样，你的服务就必须通过账号密码才可以访问了。
