
# 使用Sasl Kerberos认证
在安全集群环境下，各个组件之间不能够简单地相互通信，而需要在通信之前进行相互认证，以确保通信的安全性。Kafka应用开发需要进行Kafka、ZooKeeper、Kerberos的安全认证，这些安全认证只需要生成一个jaas文件并设置相关环境变量即可。LoginUtil相关接口可以完成这些配置。
#### 代码样例
此代码片段在com.huawei.bigdata.kafka.example.security包的LoginUtil类中。
```
/**
     * 用户自己申请的机机账号keytab文件名称
     */
    private static final String USER_KEYTAB_FILE = "用户自己申请的机机账号keytab文件名称，例如user.keytab";
    
   /**
    * 用户自己申请的机机账号名称
    */
    private static final String USER_PRINCIPAL = "用户自己申请的机机账号名称";
public static void securityPrepare() throws IOException
    {
        String filePath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "main" + File.separator + "resources" + File.separator;       
        String krbFile = filePath + "krb5.conf";
        String userKeyTableFile = filePath + USER_KEYTAB_FILE;
        
        //windows路径下分隔符替换
        userKeyTableFile = userKeyTableFile.replace("\\", "\\\\");
        krbFile = krbFile.replace("\\", "\\\\");
        
        LoginUtil.setKrb5Config(krbFile);
        LoginUtil.setZookeeperServerPrincipal("zookeeper/hadoop.<系统域名>");
        LoginUtil.setJaasFile(USER_PRINCIPAL, userKeyTableFile);
    }
```
![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/note_3.0-zh-cn.png)
用户可登录FusionInsight Manager，选择"系统 \> 权限 \> 域和互信"，查看"本端域"参数，即为当前系统域名。
