有人可以向我描述如何使用 weblogic 安全性从 AD 获取其他用户属性吗? 我已配置安全提供程序并尝试在我的 JEE 应用程序中进行身份验证。
HttpServletRequest request =
(HttpServletRequest)((ServletRequest)ADFContext.getCurrent().getEnvironment().getRequest());
CallbackHandler handler =
new SimpleCallbackHandler(username, password);
try {
Subject subject = Authentication.login(handler);
ServletAuthentication.runAs(subject, request);
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
一切都好。但从主题中我只能获取用户登录名和角色,但我需要用户电话和员工编号。我该怎么做?
最佳答案
从 Subject
检索到用户名后,您将必须发出 LDAP 查询来获取额外信息。它看起来像下面这样:
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
properties.put(Context.PROVIDER_URL, "LDAP://yourldap:389");
properties.put(Context.SECURITY_PRINCIPAL, ldapqueryuser + "@yourldap");
properties.put(Context.SECURITY_CREDENTIALS, ldapqueryuserpassword);
// initializing active directory LDAP connection
dirContext = new InitialDirContext(properties);
dirContext.search(name, filter, cons)
这些例子非常详尽:
http://docs.oracle.com/javase/jndi/tutorial/getStarted/examples/directory.html http://myjeeva.com/querying-active-directory-using-java.html
InitialDirContext 的 java 文档在这里:
http://docs.oracle.com/javase/7/docs/api/javax/naming/directory/InitialDirContext.html
关于java - 在weblogic中从AD获取自定义用户属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23263161/