文档首页/
MapReduce服务 MRS/
开发指南(LTS版)/
Flink开发指南(安全模式)/
开发Flink应用/
FlinkServer REST API样例程序/
使用代理用户访问FlinkServer REST API样例程序(Java)
更新时间:2024-10-31 GMT+08:00
使用代理用户访问FlinkServer REST API样例程序(Java)
功能介绍
通过代理用户调用FlinkServer RestAPI。以FlinkServer管理员权限的用户访问API来获取普通用户权限。
本章节适用于MRS 3.3.0及以后版本。
代码样例
以租户用户为“test92”,租户ID为“92”,获取具有FlinkServer管理员权限的用户名为“flinkserveradmin”的代理访问API为例,以下代码为完整示例。
public class TestCreateTenants {
public static void main(String[] args) {
ParameterTool paraTool = ParameterTool.fromArgs(args);
final String hostName = paraTool.get("hostName"); // 修改hosts文件,使用主机名
final String keytab = paraTool.get("keytab"); // user.keytab路径
final String krb5 = paraTool.get("krb5"); // krb5.conf路径
final String principal = paraTool.get("principal"); // 认证用户
System.setProperty("java.security.krb5.conf", krb5);
String url = "https://"+hostName+":28943/flink/v1/tenants";
String jsonstr = "{" +
"\n\t \"tenantId\":\"92\"," +
"\n\t \"tenantName\":\"test92\"," +
"\n\t \"remark\":\"test tenant remark1\"," +
"\n\t \"updateUser\":\"test_updateUser1\"," +
"\n\t \"createUser\":\"test_createUser1\"" +
"\n}";
try {
LoginClient.getInstance().setConfigure(url, principal, keytab, "");
LoginClient.getInstance().login(); // 先使用flinkserver管理员用户登录
String proxyUrl = "https://"+hostName+":28943/flink/v1/proxyUserLogin"; // 调用代理用户接口,获取普通用户token
String result = HttpClientUtil.doPost(proxyUrl, "{\n" +
"\t\"realUser\": \"flinkserveradmin\"\n" +
"}", "utf-8", true);
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
String token = jsonObject.get("result").toString();
token = "hadoop_auth=" + token;
System.out.println(HttpClientUtil.doPost(url, jsonstr, "utf-8", true , token));
} catch (Exception e) {
System.out.println(e);
}
}
}