Java从Kerberos票证中收集用户信息

时间:2014-03-25 13:58:13

标签: java single-sign-on desktop-application kerberos

我的Java桌面应用程序使用JAAS模块Krb5LoginModule从Active Directory获取Kerberos票证;这是代码:

System.setProperty("java.security.krb5.realm", realmName);
System.setProperty("java.security.krb5.kdc", realmAddress);
System.setProperty("java.security.auth.login.config", pathToFile);
LoginContext ctx = new LoginContext("SignedOnUserLoginContext");
ctx.login();
Subject signedOnUserSubject = ctx.getSubject();

这是模块:

SignedOnUserLoginContext {
   com.sun.security.auth.module.Krb5LoginModule
      required
      useTicketCache=true
      doNotPrompt=true;
};

此代码正常工作,我可以单点登录,但我不知道如何使用此故障单收集一些用户信息,如给定名称。

任何人都有一些暗示吗?

1 个答案:

答案 0 :(得分:2)

从主题中,您可以检索已登录的主体:

Principal principal = signedOnUserSubject.getPrincipals().iterator().next();

现在您可以获得主要名称:principal.getName()

使用此信息,您应该能够查询活动目录以获取有关已登录用户的更多信息,例如:给出姓名,电话号码......