# Java Kerberos Admin **Repository Path**: muffe/java-krbadmin ## Basic Information - **Project Name**: Java Kerberos Admin - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-06 - **Last Updated**: 2021-10-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 编译 1、配置 gradle.properties 中 JNI.h 的路径 2、gcc 编译器下载 ``` yum -y install gcc gcc-c++ kernel-devel ``` 3、Linux 主机已安装 MIT Kerberos Client ``` yum -y install krb5-workstation krb5-libs krb5-auth-dialog ``` 4、当前项目目录执行 ``` ./gradlew build ``` 生成 POXIS SO 包 和 jar # 用法 ``` package pl.memleak.krbadmin; public interface KrbAdmin extends AutoCloseable { void createPrincipal(String principal, String password) throws KrbAdminException; void deletePrincipal(String principal) throws KrbAdminException; void changePassword(String principal, String password) throws KrbAdminException; void keytabAdd(String principal, String keytab) throws KrbAdminException; String getRealm() throws KrbAdminException; } ``` ``` package pl.memleak.krbadmin.kadm5; import pl.memleak.krbadmin.KrbAdmin; import java.io.IOException; /** * krb5 MIT Admin API (KADM5) version 2 * * @author mmos */ public class Kadm5 implements KrbAdmin { private String principal; private String keytab; private String password; /** * @param jniAbsolutePath 引用实现的native的dll包或so * @param principal admin * @param keytab admin keytab path or * @param password admin 二选一 */ public Kadm5(String jniAbsolutePath, String principal, String keytab, String password) { this.keytab = keytab; this.principal = principal; this.password = password; System.load(jniAbsolutePath); } ``` # Demo ``` package pl.memleak.krbadmin.test; import pl.memleak.krbadmin.kadm5.Kadm5; import pl.memleak.krbadmin.kadm5.Kadm5Exception; import java.io.IOException; import java.util.Arrays; public class DemoTest { public static void main(String[] args) throws Kadm5Exception, IOException { System.out.println(Arrays.toString(args)); Kadm5 kadm5 = new Kadm5(args[0], args[1], null, args[2]); System.out.println(kadm5.getRealm()); kadm5.createPrincipal("idxtest124", "idxtest124"); kadm5.keytabAdd("idxtest124", "/tmp/idxtest124.keytab"); kadm5.close(); } } ```