1. JaaSの紹介
Java Security Framework は当初、コードの出所 (URL) とコードの作成者 (証明書) に基づいてモバイル コードを承認することにより、潜在的に信頼できないコードを実行することからユーザーを保護することに重点を置いていました。Java 2 SDK 1.3 では JAAS (Java Authentication and Authorization Service) が導入され、ユーザーベースのアクセス制御機能が追加されました。つまり、誰がコードを実行しているかに基づいて承認します。
以上がバイドゥ百科事典のJaaSの解説です。KDC をデータベースと見なすと、JaaS は JDBC にいくらか似ています。JDBC はデータベースに接続します。テンプレートに似た一連のコードがあります。MySQL データベースに接続する必要がある場合は、これらのコードを適用できます。JaaS も同じで、一連のテンプレート コードもあり、それを直接適用して Kerberos のユーザー認証を完了することができます (JaaS は Kerberos でのみ使用されるわけではありません)。JaaS の使用を見てみましょう。
2. JaaSの利用
JDK は完全な JAAS ソリューションを提供しています。完全な JAAS ログイン コードと構成を見てみましょう。
2.1 JaaS ログインのサンプル
次のコードは、クライアントが Kerberos 認証を実行するためのコードです。2行しかない
public class JaasTest {
public static void main(String[] args) {
try {
LoginContext lc = new LoginContext("JaaSSampleTest", new TextCallbackHandler());
lc.login();
Subject sub = lc.getSubject();
} catch (LoginException le) {
System.err.println("Authentication failed:");
System.exit(-1);
}
System.out.println("Authentication succeeded!");
}
}
構成ファイル jaas_test.conf は次のとおりです。
JaaSSampleTest {
com.sun.security.auth.module.Krb5LoginModule required;
};
-Djava.security.auth.login.config
=f:\kerberos\jaas.conf -Djava.security.krb5.realm=EXAMPLE.COM -Djava.security.krb5.kdc=freeipa56. example.com の実行結果は
次のとおりです。
2.2 JaaS 構成ファイル
上記の例では、kerberos 認証を実行するときに、ユーザー名とパスワードを使用します。しかし、実際の使用では、このインタラクティブな方法を使用する代わりに、keytab ファイルの方法を使用することがよくあります。これは、jaas.conf の構成パラメーターに関連しています。次の client.conf 構成ファイルは、HMaster によって採用されています。これには、私たちがよく使用する情報が含まれています。
[root@ysbdh03 0]# cat /usr/hdp/current/hbase-master/conf/hbase_master_jaas.conf
Client { # 这一值"Client"是在代码中设定的,就是new LoginContext()中的第一个参数
com.sun.security.auth.module.Krb5LoginModule required # 一般都是使用默认的Krb5LoginModule
useKeyTab=true # 认证的时候,是否采用keytab文件
storeKey=true
debug=true #是否打印debug日志
useTicketCache=false #是否采用kinit后直cache值
keyTab="/etc/security/keytabs/hbase.service.keytab" # keytab的位置
principal="hbase/[email protected]"; # keytab对应的princal的值
};
これらのパラメータは Krb5LoginModule によって設定されることに注意してください。また、いくつかの他のパラメーターも提供します。しかし、それらはより便利だと感じるものです。