使用 Spring LdapTemplate 从 Active Directory 获取所有属性

2024-03-26

我有一个 Spring Boot 应用程序,它使用 LDAP 来对用户进行身份验证。对于用户,我正在映射 AD 中的属性并填充用户的名字、姓氏、部门、电子邮件、电话以及图像等值。但是,我无法从属性中获取员工编号。 当我使用该工具检查属性时活动目录浏览器 https://learn.microsoft.com/en-us/sysinternals/downloads/adexplorer,我可以看到每个条目 88 个属性。但是,当我使用此代码打印上下文中的每个属性时,

@Bean
public UserDetailsContextMapper userDetailsContextMapper() {
    return new LdapUserDetailsMapper() {
        @Override
        public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) {

            String email = ctx.getStringAttribute("mail");
            String department = ctx.getStringAttribute("department");
            String empNumber = ctx.getStringAttribute("employeeNumber");
            System.out.println(empNumber); // this prints null

            System.out.println(ctx.attributeExists("employeeNumber")); // this prints false



            byte[] value= (byte[])ctx.getObjectAttribute("thumbNailPhoto");
            BASE64Encoder base64Encoder = new BASE64Encoder();
            StringBuilder imageString = new StringBuilder();
            imageString.append("data:image/jpg;base64,");
            imageString.append(base64Encoder.encode(value));
            String image = imageString.toString();

            Attributes attributes = ctx.getAttributes();

            NamingEnumeration<? extends Attribute> namingEnumeration = attributes.getAll();

            try {
                while(namingEnumeration.hasMore()){ 
                 /*this loop prints 75 attributes but employeeNumber attribute is missing along with some other attributes*/
                    Attribute attribute = namingEnumeration.next();
                    System.out.println(attribute); 
                }
            } catch (NamingException e) {
                e.printStackTrace();
            }

            CustomUserDetails userDetails = (CustomUserDetails)userService.loadUserByUsername(username);
            userDetails.setImage(image);
            userDetails.setEmail(email);
            userDetails.setDepartment(department);

            return userDetails;
        }
    };
}

仅打印 75 个属性。为什么有些属性没有被检索到?我如何访问这些属性?


我认为你需要扩展像memberof这样的数组元素。

试试这个..它可能会有所帮助。

Attribute attribute = namingEnumeration.next();
System.out.println(attribute); 
System.out.println(attribute.size()); 

如果大小大于一..再次扩展它

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring LdapTemplate 从 Active Directory 获取所有属性 的相关文章

随机推荐

  • Flask_migrate 可以在数据库初始化文件中与 sqlAlchemy create_engine 一起运行吗?

    如果我有一个init py 文件如下所示 from sqlalchemy import create engine import os from sqlalchemy orm import sessionmaker scoped sessi
  • CSS3 Internet Explorer 缩放背景过滤器:

    我正在尝试拉伸背景图像 使其始终填充窗口 使用 CSS3 我已经在 mozilla 和 chrome 中管理它 但是在 IE 中却遇到了困难 我以前在 IE 中管理过这个 但这次不起作用 这是我的 HTML 和 CSS HTML5
  • 如何从序列中提取升序子集?

    我有一些数据 id serial 1 1 2 2 3 3 4 1 5 3 6 2 7 1 8 2 9 3 10 1 11 2 12 1 13 2 14 3 我想按 串行 列进行分组 其中组规则是 任何升序子集 像这样 1 gt 2 gt 3
  • 编写 xml 并读回 c#

    好的 我现在使用文档方法而不是 XmlWriter 来编写 XML 我已经用 编写了我的 XML 文件 userNode xmlDoc CreateElement user attribute xmlDoc CreateAttribute
  • Rails + Android 中的 Authenticity_token

    我正在开发一个与 Rails 服务器通信的 Android 应用程序 我不想忽略authenticity token 但我也不认为询问它是正确的答案 如何保护我的 POST 请求 当您使用 API 时 像 Android 应用程序那样需要真
  • 计算 R 中具有不同权重的组的一系列加权平均值

    我有以下数据集 实际数据的简单版本 data 并且想分别使用权重 w1 和 w2 计算变量 x1 和 x2 的加权平均值 分为两组 由变量 n 确定的组 data lt data frame n c 1 1 1 2 2 2 x1 c 4 5
  • 合并重复行

    我有一个数据框 其中一列是物种名称 第二列是丰度值 由于采样程序的原因 某些物种出现多次 即 其中有不止一排物种 X 我想合并这些条目并总结它们的丰富性 例如 给定这个数据框 set seed 6 df data frame x c sp1
  • Python 回文程序无法运行

    我用 python 编写了一个简单的程序 它检查句子是否是回文 但我不明白为什么它不起作用 结果始终为 False 有谁知道出了什么问题吗 def isPalindrome word Removes all spaces and lower
  • PhoneGap Hello World 更改方向

    这很愚蠢 但如果我运行phonegap创建一些App 然后编辑config xml文件
  • 如何只允许在原始 SVG 的范围内平移

    Question 我想限制 SVG 的平移 这样当没有应用缩放时 就不可能进行平移 但是当您放大时 您可以在 SVG 的边界内平移 视觉示例 在下图中 中心的缩放视口可以平移到 SVG 的边缘 但不能进一步平移 然而这与泛示例 http a
  • 更改数组中的现有对象但仍保留键的唯一性

    我有一个文件 profile set name nick options 0 name joe options 2 name burt options 1 如果我想add新对象profile set only if the name对象的尚
  • 终止后启动带有推送通知的应用程序

    我想知道是否有办法唤醒 ios8 9 上已被用户终止的应用程序 我所说的终止是指双击主页按钮并向上滑动 是否可以通过发送静默推送通知来启动应用程序 以便didreceiveremotenotification被解雇并给我一些时间 我注意到我
  • AS3 - 如何让鼠标光标单击按钮?

    在我的应用程序中 我有一个连接到鼠标的鼠标光标 然而 它不允许我单击应用程序中的按钮 这对我来说是一个大问题 因为按钮对于我需要做的事情至关重要 我是 AS 新手 因此我们将不胜感激 stage addEventListener Mouse
  • Maybe 应该用来保存错误消息吗?

    我有一个 Haskell 函数 它接受用户输入 还有另一个函数验证此输入 当然 验证可能会失败 在这种情况下 我想返回一条错误消息 提供有关错误操作的一些反馈 我知道有很多方法可以做到这一点 根据我的一点经验 似乎最好的方法是使用Eithe
  • 如何使用 Sprite Kit 逐步模糊 SKSpriteNode 的图像?

    有人可以提供一个如何使用 Apple 的 Sprite Kit 逐渐模糊 SKSpriteNode 图像的示例吗 例如 假设用户触摸屏幕上的按钮 该按钮将触发背景缓慢 即逐渐 模糊 直到达到特定阈值 理想情况下 我也想反转该过程 例如 允许
  • 如何让php artisan作为后台服务器运行,像Apache一样工作?

    我在 VPS 上设置了一个 Laravel 应用程序 它仅用于演示目的 我将使用 PuTTY ssh 登录到 VPS 并输入 php artisan serve host x x x x 一切正常 但是 当我关闭 PuTTY 连接时 服务器
  • 测量 jpeg 中的空白

    我想测量白色 黄色的 jpeg 数量 在可以调整的容差范围内 我正在尝试开发一种质量控制工具来测量杏仁的缺陷 缺陷是棕色杏仁皮上的划痕 见下图 由于这些缺陷是白色 黄色的 我想要一种简单地将图像加载到 R 中并让它测量白色图像的量的方法 然
  • Firebase signinwithemail&password 不是函数

    我最近一直在为我的 IOS 应用程序制作一个应用程序 并将 firebase 电子邮件 密码身份验证引入到我的项目中 注册部分工作正常 但是当我执行handleSignin 函数时 它并没有按预期工作 任何想法为什么 my code imp
  • 在 Unity 中反射碰撞时的射弹

    当射击射弹时我执行 private Rigidbody rigid private Vector3 currentMovementDirection private void FixedUpdate rigid velocity curre
  • 使用 Spring LdapTemplate 从 Active Directory 获取所有属性

    我有一个 Spring Boot 应用程序 它使用 LDAP 来对用户进行身份验证 对于用户 我正在映射 AD 中的属性并填充用户的名字 姓氏 部门 电子邮件 电话以及图像等值 但是 我无法从属性中获取员工编号 当我使用该工具检查属性时活动