java - 在weblogic中从AD获取自定义用户属性

标签 java security ldap weblogic

有人可以向我描述如何使用 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/

相关文章:

java - 每次为相同的字符串值生成相同的盐

java - JHipster ldap 认证

ldap - 使用 LDIF 文件更改密码

java - JUNG 将 VisualizationViewer 中的可编辑图形导出为图像

java - 不满足的链接错误: Android OpenCV

postgresql - Keycloak可以存储在postgres中加密的用户数据吗

java - 如何实现 EAR-wide JAAS

java - 为什么 actionPerform() 在 Event Dispatch Thread 中运行,而 componentAdded() 却没有?

java - 在字符缓冲区的情况下,Java 中的 reader 内部如何工作?

windows - lastLogonTimeStamp 属性的 1601/01/01